|
本帖最后由 YTC 于 2018-6-10 16:44 编辑
优化的循环- #include<iostream>
- using namespace std;
- const int dx[]={0,-1,0,1,+0};
- const int dy[]={0,+0,1,0,-1};
- int a[4][4];
- int b[4][4];
- int k[4][4];
- bool judge()
- {
- for(int i=1;i<=3;i++)
- for(int j=1;j<=3;j++)
- if(!b[i][j]) return false;
- return true;
- }
- int ans,num=0x7fffffff;
- int main()
- {
- for(int i=1;i<=3;i++)
- for(int j=1;j<=3;j++)
- cin>>a[i][j];
- for(k[1][2]=0;k[1][2]<=1;k[1][2]++)
- for(k[2][1]=0;k[2][1]<=1;k[2][1]++)
- for(k[2][3]=0;k[2][3]<=1;k[2][3]++)
- for(k[3][2]=0;k[3][2]<=1;k[3][2]++)
- {
- k[1][1]=a[1][1]^k[1][2]^k[2][1]^1;
- k[1][3]=a[1][3]^k[1][2]^k[2][3]^1;
- k[2][2]=a[2][2]^k[1][2]^k[2][1]^k[2][3]^k[3][2]^1;
- k[3][1]=a[3][1]^k[2][1]^k[3][2]^1;
- k[3][3]=a[3][3]^k[2][3]^k[3][2]^1;
- ans=0;
- for(int i=1;i<=3;i++)
- for(int j=1;j<=3;j++)
- b[i][j]=a[i][j];
- for(int i=1;i<=3;i++)
- for(int j=1;j<=3;j++)
- if(k[i][j])
- {
- ans++;
- for(int ii=0;ii<=4;ii++)
- b[i+dx[ii]][j+dy[ii]]=1-b[i+dx[ii]][j+dy[ii]];
- }
- if(judge()) num=min(num,ans);
- }
- cout<<num;
- return 0;
- }
复制代码
|
|