| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
第一个串ababa,第二个串是空串,为什么输出b啊?应该是a啊?In Reply To:找到错误了 把cin 改称 gets 就过了,用string不能直接输入空串吗, 我先gets 然后付给string有没有好点的 Posted by:xiaxia at 2006-01-19 14:57:03 > #include <iostream>
> #include <iomanip>
> #include <cmath>
> #include <string>
> using namespace std;
>
> #define min(a, b) ((a) < (b) ? (a):(b))
>
> string a, b;
> string insa;
> string insb;
>
> bool isPalindrome(string& s, string& ins, bool tail)
> {
> int i, j;
> if(tail)
> {
> for(i = ins.length(), j = s.length() - 1; i < j; i ++, j --)
> {
> if(s[i] != s[j])
> break;
> }
> if(i >= j)
> {
> return true;
> }
> }
> else
> {
> string temps = s + ins;
> for(i = 0, j = temps.length() - 1; i < j; i ++, j --)
> {
> if(temps[i] != temps[j])
> break;
> }
> if(i >= j)
> {
> return true;
> }
> }
>
> return false;
> }
>
> bool ok()
> {
> bool aaok = isPalindrome(a, insa, true);
> bool baok = isPalindrome(b, insa, false);
> bool abok = isPalindrome(a, insb, false);
> bool bbok = isPalindrome(b, insb, true);
> bool a = (aaok && !baok) || (!aaok && baok);
> bool b = (abok && !bbok) || (!abok && bbok);
> if(a && !b)
> {
> cout << insa << endl;
> return true;
> }
> else if(!a && b)
> {
> cout << insb << endl;
> return true;
> }
> else if(a && b)
> {
> cout << min(insa, insb) << endl;
> return true;
> }
> else
> {
> return false;
> }
> }
> void main()
> {
> char chara[2000], charb[2000];
> while(gets(chara) && gets(charb))
> {
> int i;
> a = chara;
> b = charb;
>
> if(a == b)
> cout << "No Solution." << endl;
> else
> {
> int lena = a.length();
> int lenb = b.length();
> if(lena > lenb)
> {
> int ltemp = lena;
> lena = lenb;
> lenb = ltemp;
> string stemp = a;
> a = b;
> b = stemp;
> }
> insa = "";
> insb = "";
> for(i = 0; i <= lena; i ++)
> {
> if(ok())
> {
> break;
> }
> if(i < lena)
> {
> insa.insert(0, a[i]);
> insb.insert(0, b[i]);
> }
> }
> if(i == lena + 1)
> {
> if(b[lena] == 'a')
> {
> insa.insert(0, 'b');
> cout << insa << endl;
> }
> else
> {
> insa.insert(0, 'a');
> cout << insa << endl;
> }
> }
> }
> }
>
> }
>
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator