#20886: RE 學藝不精 無法理解


s610627@whsh.tc.edu.tw (vkis87)

學校 : 國立文華高級中學
編號 : 75984
來源 : [210.240.195.3]
最後登入時間 :
2020-11-17 11:17:08
a022. 迴文 | From: [116.241.211.81] | 發表日期 : 2020-03-15 21:54

自己在電腦上測試都可以 提交會RE

#include<iostream>
#include<string>
using namespace std;

int main() {
string str;
int a=-1,k=0;
while(cin>>str) {
for(int i=str.size()-1;i>=str.size()/2;i--) {
a++;
if (str[i]==str[a]) {
k=k+2;
}
}
if (k>=str.size()) {
cout << "yes" << endl;
k=0,a=-1;
str="" ;
}
else {
cout << "no" << endl;
k=0,a=-1;
str="" ;
}
}
}

 
#22509: Re:RE 學藝不精 無法理解


snakeneedy (蛇~Snake)

學校 : 國立高雄師範大學附屬高級中學
編號 : 7661
來源 : [114.40.8.251]
最後登入時間 :
2023-01-25 19:16:06
a022. 迴文 | From: [123.194.188.217] | 發表日期 : 2020-09-11 00:53

核心問題出在判斷式 i>=str.size()/2,可以試著跑看看這段程式碼的結果(自己補上 include 和 main)

string str = "string";
cout << ((-1) >= str.size() ? "true" : "false") << endl;
cout << ((-1) >= (int)str.size() ? "true" : "false") << endl;

細節上,(-1) 是 int 而 str.size() 是 size_t,兩者比較可能會出錯(尤其是負數

也可以思考看看其他比較簡潔的作法

 
ZeroJudge Forum