求调,玄关
  • 板块灌水区
  • 楼主guosichen123456
  • 当前回复6
  • 已保存回复6
  • 发布时间2025/2/6 17:07
  • 上次更新2025/2/6 20:30:56
查看原帖
求调,玄关
1355742
guosichen123456楼主2025/2/6 17:07

RE了,实在找不出bug。

#include <bits/stdc++.h>
using namespace std;
int n,vis[100001];
struct f
{
	int a,step;
	f(int x,int y)
	{
		a=x;
		step=y;
	}
};
queue<f>q;
int f1(int d,int y)
{
	return (y&(1<<d))>>d;
}
int main()
{
	int n;
	cin>>n;
	if(n==255)
	{
		cout<<0;
		return 0;	
	}
	q.push(f(n,0));
	vis[n]=1;
	while(!q.empty())
	{
		f x=q.front();
		q.pop();
		for(int i=0;i<=15;i++)
        {
			int s=0,z=f1(i,x.a);
			if(i%4!=0)
            {
				if(z!=f1(i-1,x.a))
                {
					if(z==1)s=x.a-(1<<i)+1<<(i-1);
					else s=x.a+(1<<i)-(1<<(i-1));	
					if(s==255)
                    {
						cout<<++x.step;
						return 0;
					} 
					if(!vis[s])
					{
						vis[s]=1;
						q.push(f(s,x.step+1)); 
					}
				}
			}
			if(i>3)
            {
				if(z!=f1(i-4,x.a))
                {
					if(z!=f1(i-1,x.a))
                    {
						if(z==1)s=x.a-(1<<i)+1<<(i-4);
						else s=x.a+(1<<i)-(1<<(i-4));	
						if(s==255)
                        {
							cout<<++x.step;
							return 0;
						} 
						if(!vis[s])
                        {
							vis[s]=1;
							q.push(f(s,x.step+1)); 
						}
					}	
				}
			}
		}
	}
	return 0;
}


2025/2/6 17:07
加载中...