码迷,mamicode.com
首页 > 其他好文 > 详细

Party Games UVA - 1610

时间:2017-08-02 16:58:26      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:stream   试验   iostream   计算   names   main   bug   logs   goto   

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
//生成字符串
/*
求出排序后位于中间的两个字符串较小的和较大的分别为s1,s2
s[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

标签:stream   试验   iostream   计算   names   main   bug   logs   goto   

原文地址:http://www.cnblogs.com/hehe54321/p/7274760.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!