ArcTan

dfs
随笔 - 16, 文章 - 117, 评论 - 6, 引用 - 0
数据加载中……

poj1753(枚举)

http://poj.org/problem?id=1753


枚举。这个和poj2965一样嘛,不用多说:

#include<stdio.h>
    
int a[17],b[17],t[17];
int check()
{
    
int i,sum=0;
    
for (i=1;i<=16;i++)
        sum
+=b[i];
    
if (sum==16||sum==0)
        
return 1;
    
return 0;
}
int turn(int s)
{
    
int x,y;
    x
=(s-1)/4+1;y=(s-1)%4+1;
    
if (x>1)
        b[s
-4]=1-b[s-4];
    
if (x<4)
        b[s
+4]=1-b[s+4];
    
if (y>1)
        b[s
-1]=1-b[s-1];
    
if (y<4)
        b[s
+1]=1-b[s+1];
    b[s]
=1-b[s];
}
int main()
{
    
int i,j,step,ans;
    
char ch;
    
for (i=1;i<=4;i++)
    {
        
for (j=1;j<=4;j++)
        {
            scanf(
"%c",&ch);
            
if (ch=='w')
                a[i
*4-4+j]=1;
            
else
                a[i
*4-4+j]=0;
        }
        scanf(
"%c",&ch);
    }
    ans
=17;
    
for (t[1]=0;t[1]<=1;t[1]++)
    
for (t[2]=0;t[2]<=1;t[2]++)    
    
for (t[3]=0;t[3]<=1;t[3]++)
    
for (t[4]=0;t[4]<=1;t[4]++)
    
for (t[5]=0;t[5]<=1;t[5]++)
    
for (t[6]=0;t[6]<=1;t[6]++)
    
for (t[7]=0;t[7]<=1;t[7]++)
    
for (t[8]=0;t[8]<=1;t[8]++)
    
for (t[9]=0;t[9]<=1;t[9]++)
    
for (t[10]=0;t[10]<=1;t[10]++)
    
for (t[11]=0;t[11]<=1;t[11]++)
    
for (t[12]=0;t[12]<=1;t[12]++)
    
for (t[13]=0;t[13]<=1;t[13]++)
    
for (t[14]=0;t[14]<=1;t[14]++)
    
for (t[15]=0;t[15]<=1;t[15]++)
    
for (t[16]=0;t[16]<=1;t[16]++)
    {
        
for (i=1;i<=16;i++)
            b[i]
=a[i];
        
for (i=1;i<=16;i++)
            
if (t[i])
                turn(i);
        
if (check())
        {
            step
=0;
            
for (i=1;i<=16;i++)
                    step
=step+t[i];
            
if (step<ans)
                ans
=step;
        }
    }
    
if (ans<=16)
        printf(
"%d\n",ans);
     
else
         printf(
"Impossible");
}


多做点枚举的题目总是好的,枚举枚举,不一定是搜索哦。

posted on 2012-03-04 00:30 wangs 阅读(933) 评论(2)  编辑 收藏 引用 所属分类: ACM-201203

评论

# re: poj1753(枚举)[未登录]  回复  更多评论   

哥们,这么写不对吧,翻了一个位置,在翻了其他的之后还可以翻这个的,你这不行啊
2012-03-05 21:41 | 1

# re: poj1753(枚举)  回复  更多评论   

@1
啊哈,那确实是AC了呀。你这样想想,其实那个翻转的顺序是可交换的。这样就不用翻两次了。。。。
2012-03-05 22:38 | 王私江

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理