为啥把loop定义为for(int i = 0;i < 3;i ++)for(int j = 0;j < 3;j ++)就要出错啊,代码如下:
#include<iostream>
#define loop for(int i = 1;i <= 3;i ++)for(int j = 1;j <= 3;j ++)
using namespace std;
int a[105][105];
int ans = 0,cnt = 10;
void change(int x,int y){
a[x][y] = ! a[x][y];
a[x + 1][y] = ! a[x + 1][y];
a[x][y + 1] = ! a[x][y + 1];
a[x - 1][y] = ! a[x - 1][y];
a[x][y - 1] = ! a[x][y - 1];
}
void dfs(int k){
if(k > cnt)return;
int mid = 0;
loop
mid += a[i][j];
if(mid == 9){
ans = k - 1;
cnt = min(ans,cnt);
}
loop{
change(i,j);
dfs(k + 1);
change(i,j);
}
return;
}
int main(){
loop
cin>>a[i][j];
dfs(1);
cout<<cnt<<endl;
}