设为首页 加入收藏

TOP

POJ1166 The Clocks [枚举]
2015-07-24 05:51:39 来源: 作者: 【 】 浏览:4
Tags:POJ1166 The Clocks 枚举

这题蛮有意思,不知道怎么分类到高斯了, 应该是一道枚举

思路很赞,不多说,看代码

c那个数组很容易初始化错误呢

最后的输出有点搞人,不过也可能不用特别注意最后一个空格

#include 
  
   
#include 
   
     #include 
    
      #include 
     
       using namespace std; int c[10][10]={ {0,0,0,0,0,0,0,0,0,0}, {0,1,1,0,1,1,0,0,0,0}, {0,1,1,1,0,0,0,0,0,0}, {0,0,1,1,0,1,1,0,0,0}, {0,1,0,0,1,0,0,1,0,0}, {0,0,1,0,1,1,1,0,1,0}, {0,0,0,1,0,0,1,0,0,1}, {0,0,0,0,1,1,0,1,1,0}, {0,0,0,0,0,0,0,1,1,1}, {0,0,0,0,0,1,1,0,1,1} }; void copy(int* tmp,int* num) { for(int i=1;i<=9;i++) tmp[i]=num[i]; } void add(int* tmp,int i,int ti) { for(int ii=1;ii<=9;ii++) { tmp[ii]+=c[i][ii]*ti; tmp[ii]%=4; } } bool check(int* tmp) { for(int i=1;i<=9;i++) { if(tmp[i]!=0) return false; } return true; } int sum(int* t) { int s=0; for(int i=1;i<=9;i++) s+=t[i]; return s; } int num[10]; int tmp[10]; int t[10]; int ans[10]; int minn=9999999; int main() { for(int i=1;i<=9;i++) cin>>num[i]; for(t[1]=0;t[1]<=3;t[1]++) for(t[2]=0;t[2]<=3;t[2]++) for(t[3]=0;t[3]<=3;t[3]++) for(t[4]=0;t[4]<=3;t[4]++) for(t[5]=0;t[5]<=3;t[5]++) for(t[6]=0;t[6]<=3;t[6]++) for(t[7]=0;t[7]<=3;t[7]++) for(t[8]=0;t[8]<=3;t[8]++) for(t[9]=0;t[9]<=3;t[9]++) { copy(tmp,num); for(int i=1;i<=9;i++) add(tmp,i,t[i]); if(!check(tmp)) continue; else if(sum(t)
      
       

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇hdu 2767 Proving Equivalences .. 下一篇10710 - Chinese Shuffle(数论+完..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: