个人不是很理解
查看原帖
个人不是很理解
1268524
DX3906_ourstar楼主2024/7/8 09:46

为啥把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;
}
2024/7/8 09:46
加载中...