猴子上线
查看原帖
猴子上线
346332
封禁用户楼主2023/3/4 19:39
"某E的真实姓名为b,L队的真实姓名为a,请问字典序应该如何定义?"
“别急,让我掷个骰子……”
于是,他将序列打乱,并比较了大小。
“咦,这个序列怎么不对?别急,让我掷个骰子……”
于是,他将序列打乱,并比较了大小。
“过啦!”

猴子算法:(能AC)

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int s[128];
char ans[128];
bool cmp(string s1,string s2){//s1<s2吗? 
	for(int i=0,len=min(s1.length(),s2.length());i<len;i++){
		if(s[s1[i]]<s[s2[i]])	return true;
		else if(s[s1[i]]>s[s2[i]])	return false;
	} 
	return s1.length()<s2.length();
}
void init(){
	for(char ch='a';ch<='z';++ch){
		s[ch]=ch-'a';
	}
}
int main(){
	init();
	string s1,s2;
	cin >> s1 >> s2;
	while(cmp(s1,s2)){
		random_shuffle(s+'a',s+'z'+1);
	}
	for(char ch='a';ch<='z';++ch){
		ans[s[ch]]=ch;
	}
	cout<< ans;
	return 0;
}
2023/3/4 19:39
加载中...