⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3007404_tle.cc

📁 北大大牛代码 1240道题的原代码 超级权威
💻 CC
字号:
#include <stdio.h>

int press[17];
int ans, finish;
char str[5][5];

int valid(int x,int y)
{
	if(x < 0 || y < 0 || x > 3 || y > 3)
		return 0;
	return 1;
}

void flip(int num)
{
	int i, j;
	int x, y;
	char map[4][5];

	for(i = 0; i < 4; i++)
	{
		for(j = 0; j < 4; j++)
		{
			map[i][j] = str[i][j];
		}
		map[i][j] = '\0';
	}
	for(i = 0; i < 16; i++)
	{
		if(!press[i])
		{
			continue;
		}
		x = i/4;
		y = i%4;
		for(j = 0; j < 4; j++)
		{
			if(map[x][j]=='+')
				map[x][j] = '-';
			else
				map[x][j] = '+';
		}
		for(j = 0; j < 4; j++)
		{
			if(j==x)
				continue;
			if(map[j][y]=='+')
				map[j][y] = '-';
			else
				map[j][y] = '+';
		}
	}
	for(i = 0; i < 4; i++)
	{
		for(j = 0; j < 4; j++)
		{
			if(map[i][j]=='+')
				return ;
		}
	}
	finish = 1;
	printf("%d\n",num);
	for(i = 0; i < 16; i++)
	{
		if(press[i])
		{
			printf("%d %d\n",i/4+1,i%4+1);
		}
	}
}

void enumerate(int p,int num)
{
	int i;
	
	if(finish)
	{
		return ;
	}
	if(p == 16)
	{
		flip(num);
		return ;
	}
	for(i = 0; i < 2 && !finish; i++)
	{
		press[p] = i;
		enumerate(p+1,num+i);
	}
}

int main()
{
	int i;
		
	for(i = 0; i < 4; i++)
	{
		scanf("%s",str[i]);
	}
	finish = 0;
	enumerate(0,0);
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -