沐里纷纷


私信TA

用户名:Epoch

访问量:62779

签 名:

我不会算法

等  级
排  名 37
经  验 12814
参赛次数 1
文章发表 172
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

不会算法

解题思路:

只要你,够暴力,我就让你 * * *

注意事项:

参考代码:

#include <iostream>
#include <algorithm>
#include <string>
#include <vector>

using namespace std;

bool light[9];

vector<string> ans;

int a[][9] = {
	{0,0,0,0,0,0,0,0,1},
	{0,0,0,0,0,0,0,1,1},
	{0,0,0,0,0,0,1,1,1},
	{0,0,0,0,0,1,1,1,1},
	{0,0,0,0,1,1,1,1,1},
	{0,0,0,1,1,1,1,1,1},
	{0,0,1,1,1,1,1,1,1},
	{0,1,1,1,1,1,1,1,1},
	{1,1,1,1,1,1,1,1,1},
};

bool check()
{
	int count = 0;
	for (int j = 0; j < 9; j++)
		if (light[j])
			count += 1;
	if (count == 4)
		return true;
	else
		return false;
}

void solve()
{
	for (int i = 0; i < 9; i++)
	{
		do
		{
			for (int j = 0; j < 9; j++)
			{
				if (a[i][j] == 1)
				{
					if (j == 0)
					{
						light[1] = !light[1];
						light[3] = !light[3];
					}
					if (j == 1)
					{
						light[0] = !light[0];
						light[2] = !light[2];
						light[4] = !light[4];
					}
					if (j == 2)
					{
						light[1] = !light[1];
						light[5] = !light[5];
					}
					if (j == 3)
					{
						light[0] = !light[0];
						light[4] = !light[4];
						light[6] = !light[6];
					}
					if (j == 4)
					{
						light[1] = !light[1];
						light[3] = !light[3];
						light[5] = !light[5];
	  					light[7] = !light[7];
					}
					if (j == 5)
					{
						light[2] = !light[2];
						light[4] = !light[4];
						light[8] = !light[8];
					}
					if (j == 6)
					{
	  					light[3] = !light[3];
	  					light[7] = !light[7];
					}
					if (j == 7)
					{
						light[4] = !light[4];
						light[6] = !light[6];
						light[8] = !light[8];
					}
					if (j == 8)
					{
						light[5] = !light[5];
	  					light[7] = !light[7];
					}
				}
			}
			
			if (check())
			{
//				for (int j = 0; j < 9; j++)
//					cout << a[i][j];
//				cout << endl;
				string s;
				for (int j = 0; j < 9; j++)
					s += '0' + a[i][j];
				ans.push_back(s);
			}
			
			for (int k = 0; k < 9; k++)
				light[k] = false;
			
		} while (next_permutation(a[i], a[i] + 9));
	}
	
	sort(ans.begin(), ans.end());
	
	for (vector<string>::iterator it = ans.begin(); it < ans.end(); it++)
		cout << *it << endl;
	
}

int main()
{
	solve();
	return 0;
}


 

0.0分

2 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区