敢问各位,我这个代码是什么问题啊?
查看原帖
敢问各位,我这个代码是什么问题啊?
339828
reaper30310楼主2022/5/15 15:56

祈祷三连唱:
千万不要写错笔误
千万不要写错笔误
千万不要写错笔误

#include<bits/stdc++.h>
using namespace std;

struct ST{
	int Cl[10];//存时钟状态 
	int ans[30];//存储到达这个位置的路径 
	int cnt;//记录已经选了哪些方法(路径) 
};

bool vis[4][4][4][4][4][4][4][4][4];

int f[10][10]={
				{0,0,0,0,0,0,0,0,0,0},
				{0,1,1,0,1,1,0,0,0,0},
				{0,1,1,1,0,0,0,0,0,0},
				{0,0,1,1,0,1,1,0,0,0},
				{0,1,0,0,1,0,0,1,0,0},
				{0,0,1,0,1,1,1,0,1,0},
				{0,0,1,0,0,1,0,0,0,1},
				{0,0,0,0,1,1,0,1,1,0},
				{0,0,0,0,0,0,0,1,1,1},
				{0,0,0,0,0,1,1,0,1,1},
				};

queue<ST>Q; 

int main()
{
	ST t={0};
	for(int i=1;i<=9;i++)
	{
		cin>>t.Cl[i]; 
		t.Cl[i]=t.Cl[i]/3%4; 
	}
	Q.push(t);
	while(!Q.empty())
	{
		ST p=Q.front();
		Q.pop();
		int flag=1;
		for(int i=1;i<=9;i++)
		{
			if(p.Cl[i]!=0)
			{
				flag=0;
			}
		}
		if(flag==1)
		{
			for(int i=1;i<=p.cnt;i++)
			{
				cout<<p.ans[i]<<" ";
			}
			break;
		}
		for(int i=1;i<=9;i++)
		{
			for(int j=1;j<=9;j++)
			{
				t.Cl[j]=(t.Cl[j]+f[i][j])%4;
				
			}
			if(vis[t.Cl[1]][t.Cl[2]][t.Cl[3]][t.Cl[4]][t.Cl[5]][t.Cl[6]][t.Cl[7]][t.Cl[8]][t.Cl[9]]==0)
			{
				vis[t.Cl[1]][t.Cl[2]][t.Cl[3]][t.Cl[4]][t.Cl[5]][t.Cl[6]][t.Cl[7]][t.Cl[8]][t.Cl[9]]=1;
				t.cnt++;
				t.ans[t.cnt]=i;
				Q.push(t);
			}
		}
	}
}

2022/5/15 15:56
加载中...