欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

POJ画家问题

程序员文章站 2024-03-17 18:02:52
...
#include<iostream>
#include<cstring>
#include<string>
#include<cmath>
#include<map>
#include<algorithm>
using namespace std;

int n;
int puzzle[20][20],press[20][20];

bool guess(){
	for(int i=2;i<=n;i++) {
		for(int j=1;j<=n;j++){
			press[i][j]=(press[i-1][j]+press[i-2][j]+press[i-1][j-1]+press[i-1][j+1]+puzzle[i-1][j])%2;
		}
	}
	bool flag=true;
	for(int j=1;j<=n;j++) if((press[n][j]+press[n-1][j]+press[n][j-1]+press[n][j+1]+puzzle[n][j])%2==1) flag=false;
	return flag;
}
void enumate(){
	while(guess()==false&&press[1][n+1]==0){
		press[1][1]++;
		for(int i=1;i<20;i++){
			if(press[1][i]==2){
				press[1][i+1]++;
				press[1][i]=0;
			}
		}
	}
	int x=0;
	for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) if(press[i][j]==1) x++;
	if(press[1][n+1]==1) printf("inf");
	else printf("%d",x);
}
int main(){
	cin>>n;
	char c;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>c;
			if(c=='w') puzzle[i][j]=1;
			else puzzle[i][j]=0;
		}
	}
	enumate();
	return 0;
}
	






相关标签: POJ