0分蒟蒻求助
  • 板块题目总版
  • 楼主phi_gros
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/12/15 10:08
  • 上次更新2024/12/15 12:49:55
查看原帖
0分蒟蒻求助
1356725
phi_gros楼主2024/12/15 10:08

P2040 打开所有的灯

#include<bits/stdc++.h>
using namespace std;
long long a[5][5],minn = LONG_LONG_MAX,idx = 10;
bool flag;
const int n = 3;

int f(int a){
    if(a)return 0;
    return 1;
}

void dfs(long long step){
    if(a[1][1] + a[1][2] + a[1][3] + a[2][1] + a[2][2] + a[2][3] + a[3][1] + a[3][2] + a[3][3] == 9){
        minn = min(minn,step - 1);
        idx =  max(step - 1,idx);
        return ;
    }
    if(step >= idx)return ;
    for(int i = 1;i <= n;i ++){
	    for(int j = 1;j <= n;j ++){
	        a[i][j] = f(a[i][j]);
	        a[i + 1][j] = f(a[i + 1][j]);
	        a[i - 1][j] = f(a[i - 1][j]);
	        a[i][j + 1] = f(a[i][j + 1]);
	        a[i][j - 1] = f(a[i][j - 1]);
            dfs(step + 1);
            a[i][j] = f(a[i][j]);
	        a[i + 1][j] = f(a[i + 1][j]);
	        a[i - 1][j] = f(a[i - 1][j]);
	        a[i][j + 1] = f(a[i][j + 1]);
	        a[i][j - 1] = f(a[i][j - 1]);
	    }
    }
}

int main(){
	for(int i = 1;i <= n;i ++)
	    for(int j = 1;j <= n;j ++)
	        cin >> a[i][j];
	        dfs(1);
	cout << minn;
	return 0;
}
2024/12/15 10:08
加载中...