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