一个只有juju才会问的问题(O_O)?
查看原帖
一个只有juju才会问的问题(O_O)?
658786
STUDENT00楼主2022/9/10 16:05

这份代码竟然运行出了133!!!

#include<bits/stdc++.h>
using namespace std;
int m,t;
string s;
bool vis[1000000];
queue<string> qt;
int main(){
	cin>>s;
	scanf("%d",&m);
	qt.push(s);
	vis[atoi(s.c_str())]=1;
	while(!qt.empty()){
		string now=qt.front();
		qt.pop();
		cout<<now<<" ";
		int len=now.length();
		for(int i=0;i<len-1;i++){
			for(int j=i+1;j<len;j++){
				swap(now[i],now[j]);
				int num=atoi(now.c_str());
				if(!vis[num]){
					vis[num]=1;
					qt.push(now);
				}
				swap(now[i],now[j]);
			}
		}
		for(int i=0;i<len;i++){
			string p=now;
			p.erase(i,1);
			int num=atoi(p.c_str());
			if(!vis[num]){
				vis[num]=1;
				qt.push(p);
			}
		}
		if(len<=5){
			for(int i=0;i<len-1;i++){
				for(char j=now[i]+1;j<now[i+1];j++){
					string p=now;
					p.insert(i+1,1,j);
					int num=atoi(p.c_str());
					if(!vis[num]){
						vis[num]=1;
						qt.push(p);
					}
				}
			}
		}
		cout<<now<<endl;
	}
	while(m--){
		scanf("%d",&t);
		cout<<vis[t]<<endl;
	}
	return 0;
}
2022/9/10 16:05
加载中...