首页 > 代码库 > dfs qipan
dfs qipan
#include<iostream> char data[16]; int a[16]; int d[4]={-4,1,4,-1}; char b[16]; int flag; int count=0; int min=1000; void dfs(int step) { if(step==16) { /* for(int i=0;i<16;i++) printf("%d",a[i]); printf("\n");*/ count=0;flag=1; for(int i=0;i<16;i++) b[i]=data[i]; for(int i=0;i<16;i++) { /*if(a[i]==0) b[i]=data[i];*/ if(a[i]==1) { if(b[i]==‘b‘) { b[i]=‘w‘; } else { b[i]=‘b‘; } for(int j=0;j<4;j++) { if(i+d[j]>=0&&i+d[j]<16) { if(b[i+d[j]]==‘w‘) { b[i+d[j]]=‘b‘; } else { b[i+d[j]]=‘w‘; } } } } } /* for(int i=0;i<16;i++) { printf("%c",b[i]); } printf("\n");*/ for(int i=0;i<16;i++) { if(b[0]==b[i]) flag=1; else { flag=0; break; } } /*if(b[0]==b[1]==b[2]==b[3]==b[4]==b[5]==b[6]==b[7]==b[8]==b[9]==b[10]==b[11]==b[12]==b[13]==b[14]==b[15]) flag=1;*/ if(flag==1) { printf("!!"); for(int i=0;i<16;i++) { if(a[i]==1) count++; } printf("%d ",count); } return ; } for(int i=0;i<2;i++) { a[step]=i; dfs(step+1); } } int main() { freopen("input.txt","r",stdin); for(int i=0;i<16;i++) { scanf("%c",&data[i]); } for(int i=0;i<16;i++) { b[i]=data[i]; } dfs(0); }
dfs qipan
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。