输不出答案,求助!!!!
查看原帖
输不出答案,求助!!!!
565707
mediocre_楼主2022/9/12 07:33
#include<bits/stdc++.h>
using namespace std;
int a[5][5];
int ans = 10005;
bool ui;
void let(int x, int y) {
	a[x][y] = abs(a[x][y] - 1);
	a[x - 1][y] = abs(a[x - 1][y] - 1);
	a[x + 1][y] = abs(a[x + 1][y] - 1);
	a[x][y - 1] = abs(a[x][y - 1] - 1);
	a[x][y + 1] = abs(a[x][y + 1] - 1);
}
void dfs(int x) {
	//for (int i = 1; i <= 3; ++i) {
	//	for (int j = 1; j <= 3; ++j)
	//		printf("%d ", a[i][j]);
	//	printf("\n");
	//}
	//printf("-------------------------------------\n");
	//printf("%d\n", x);
	//printf("-------------------------------------\n");
	bool use = false;
	for (int i = 1; i <= 3; ++i)
		for (int j = 1; j <= 3; ++j)
			if (a[i][j] == 0)
				use = true;
	if (use == false) {
		if (x < ans)
			ans = x;
		return;
	}
	for (int i = 1; i <= 3; ++i)
		for (int j = 1; j <= 3; ++j) {
            let(i,j);
            dfs(x + 1);
            let(i,j);
		}
}
int main() {
	for (int i = 1; i <= 3; ++i)
		for (int j = 1; j <= 3; ++j)
			scanf("%d", &a[i][j]);
	dfs(0);
	printf("%d", ans);
	return 0;
}
2022/9/12 07:33
加载中...