首页 > 代码库 > Party Games UVA - 1610

Party Games UVA - 1610

#include<iostream>#include<string>#include<algorithm>using namespace std;//生成字符串/*求出排序后位于中间的两个字符串较小的和较大的分别为s1,s2s[i]表示字符串s的第i位对于第1位,显然只需要考虑两个值:s1[1],s1[1]+1如果单独一位两种方式不能满足,则考虑2位的情况显然,如果需要考虑第2位,那么第1位应该取s1[1]对于第i位,如果s1[i]和s2[i]都存在,只要类比以上方法即可如果s1.length>s2.length试验可得用一般的方法即可如果s1.length<s2.length如果计算到s1.length位仍未得出结果,那么答案就是s1*///曾经出过的bug:忽略了s1[i]+1超出了字母范围(A到Z)的情况,此时应舍去string s[1000];string t1,t2,s1,s2;int n;int main(){	int i;	cin>>n;	while(n!=0)	{		t1="";t2="";		for(i=0;i<n;i++)			cin>>s[i];		sort(s,s+n);		s1=s[(n/2)-1];		s2=s[n/2];		for(i=0;i<s1.length();i++)		{			t2=t1+s1[i];			if(t2>=s1&&t2<s2)			{				cout<<t2<<‘\n‘;				goto haha;			}			if(s1[i]+1<=‘Z‘)			{				t2=t1+(char)(s1[i]+1);				if(t2>=s1&&t2<s2)				{					cout<<t2<<‘\n‘;					goto haha;				}			}			t1+=s1[i];		}		if(s1.length()<s2.length())		{			cout<<s1<<‘\n‘;		}		haha:		cin>>n;	}	return 0;}

  

Party Games UVA - 1610