#16306: 請問各位大大哪裡錯了


kolagh7486 (電腦前的咖啡)

學校 : 國立臺中高級工業職業學校
編號 : 88363
來源 : [1.200.121.142]
最後登入時間 :
2022-09-24 16:06:42
a022. 迴文 | From: [111.246.86.96] | 發表日期 : 2018-12-17 22:53

#include <iostream>
#include <string>

using namespace std;

string chars;


int main()
{
while(cin>>chars)
{
int judge1=chars.length();
int judge2=judge1/2;
int judge=0;
for(int i=0;i<=judge2;i++)
if(chars[i]==chars[judge1-i])
judge=1;
if(judge==1)
cout<<"yes"<<endl;
else
cout<<"no"<<endl;





}




}

 
#16310: Re:請問各位大大哪裡錯了


OwO310659 (OwO)

學校 : 新北市立板橋高級中學
編號 : 58647
來源 : [118.150.111.60]
最後登入時間 :
2024-04-25 01:16:40
a022. 迴文 | From: [106.105.27.148] | 發表日期 : 2018-12-18 01:59

大致看了一下你的程式有瞭個錯誤:

1. 相對位置索引錯誤,
  假設 字串s 的長度為 len ,
  其字元的索引值為 s[0]~s[len-1] , (並非 s[0]~s[len] , 因為這樣長度會變成 len+1 )
  在字串反轉(左右顛倒)之後,
  s[0] 會對應到 s[len-1] ,
  s[1] 會對應到 s[len-2] ... ...
  可以發現 s[i] 對應的依該是 s[len-i-1] 而非 s[len-i],
  所以在判斷式中的 chars[i] 其對應位置應該是 chars[judge1-i-1] 唷~

2. 程式上的邏輯錯誤, (假設上一個問題已經解決了)
  以你的程式這樣的寫法會變成,
  只要 chars 中任意的 chars[i]==chars[judge1-i-1] 就會輸出 "yes" ,
  但依照迴文的定義應該要是所有的 chars[i]==chars[judge1-i-1] 才會是迴文唷~

以上希望有幫助到你~ OwO

 
ZeroJudge Forum