#34633: 大神能幫我看看嗎 範例測資沒問題 但送出後答案都不對


jack31304 (F.N)

學校 : 臺北市立明倫高級中學
編號 : 87130
來源 : [180.176.208.117]
最後登入時間 :
2024-03-24 22:01:52
a271. 彩色蘿蔔 -- 兔子 | From: [180.176.208.117] | 發表日期 : 2023-04-04 12:52

您的答案為: 12483g
正確答案為: 12643g
您的答案為: 2269g
正確答案為: 2369g
答案總是差一點 想很久都找不到問題 
請各位大神幫我看看了!

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


int main(){
    int testtimes;
    cin >> testtimes;                       //輸入測資數目
    for(int i = 1 ; i <= testtimes ; i++){  //執行(測資數目)次
        cin.ignore();                      
        string first ,second ;              //first為xyzwnm ,second為每天吃的蘿蔔
        int hp=0;                           //hp為血量 debuff為中毒狀態
        int debuff=0;
        getline(cin,first);
        getline(cin,second);
        stringstream s1;
        string cutline;
        s1 << first;

        int parameter[7] = {0};             //用parameter[]接收 first切割後的字串
        int count = 1;                      //parameter[1]到parameter[6]分別接收xyzwnm
        while(s1 >> cutline){            
            parameter[count] = stoi(cutline);
            count ++;
        }

        s1.str("");
        s1.clear();
        cutline = "";
        cutline.clear();
       
       
        if(second == ""){                              //如果直接問第一天體重 就輸出m 並break
            cout << parameter[6] << 'g'  << endl;
            break;    
        }

        hp += parameter[6];
        s1 << second;    
        while(s1 >> cutline){                          //將second分割 讀取吃了甚麼蘿蔔
            if(debuff > 0){
                hp -= (parameter[5]*debuff);           //先判斷有無中毒 先扣hp 再判斷是否死亡
                if(hp <= 0){
                cout << "bye~Rabbit" << endl;
                break;
                }
            }
           
            if(stoi(cutline) == 1){                    //讀取到的字串1 2 3 4 分別對應
                hp += parameter[1];                    //紅 白 黃 黑 色的蘿蔔
            }
            else if(stoi(cutline) == 2){
                hp += parameter[2];
            }
            else if(stoi(cutline) == 3){
                hp -= parameter[3];
            }
            else if(stoi(cutline) == 4){               //若吃到黑色蘿蔔會給與中毒(debuff)並在
                hp -= parameter[4];                    //下一次(天)讀取字串時扣血
                debuff += 1;
            }

            if(hp <= 0){                                //如果吃完hp < 0 則輸出bye
                cout << "bye~Rabbit" << endl;
                break;
            }
            //cout << "hp now =" << hp <<endl;
        }
        if(hp > 0){                                     //讀取完全部天數所吃蘿蔔後
        cout << hp << 'g' << endl;}                     //若hp > 0 則輸出體重

    }
}
 
#34640: Re: 大神能幫我看看嗎 範例測資沒問題 但送出後答案都不對


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [101.136.203.77]
最後登入時間 :
2024-04-07 15:34:14
a271. 彩色蘿蔔 -- 兔子 | From: [118.231.152.169] | 發表日期 : 2023-04-04 21:04

1.
    cin >> testtimes;                       //輸入測資數目
    for(int i = 1 ; i <= testtimes ; i++){  //執行(測資數目)次
        cin.ignore();                      
2.
        if(second == ""){                              //如果直接問第一天體重 就輸出m 並break
            cout << parameter[6] << 'g'  << endl;
            break;    
        }


1. cin.ignore() 放錯地方了,除了第一筆測資之外第一個字都會被吃掉

2. break 改成 continue

3. 有多筆測資,讀到 EOF 結束

4. io 加速,不然會TLE

 
#34643: Re: 大神能幫我看看嗎 範例測資沒問題 但送出後答案都不對


jack31304 (F.N)

學校 : 臺北市立明倫高級中學
編號 : 87130
來源 : [180.176.208.117]
最後登入時間 :
2024-03-24 22:01:52
a271. 彩色蘿蔔 -- 兔子 | From: [180.176.208.117] | 發表日期 : 2023-04-05 00:11

1.
    cin >> testtimes;                       //輸入測資數目
    for(int i = 1 ; i <= testtimes ; i++){  //執行(測資數目)次
        cin.ignore();                      
2.
        if(second == ""){                              //如果直接問第一天體重 就輸出m 並break
            cout << parameter[6] << 'g'  << endl;
            break;    
        }


1. cin.ignore() 放錯地方了,除了第一筆測資之外第一個字都會被吃掉

2. break 改成 continue

3. 有多筆測資,讀到 EOF 結束

4. io 加速,不然會TLE


1 2點改掉終於AC了
第3點 我想說題目有給就用for跑
第4點以後我會多注意的
謝謝您的指教!

 
#34647: Re: 大神能幫我看看嗎 範例測資沒問題 但送出後答案都不對


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [101.136.203.77]
最後登入時間 :
2024-04-07 15:34:14
a271. 彩色蘿蔔 -- 兔子 | From: [118.231.152.169] | 發表日期 : 2023-04-05 08:32


第3點 我想說題目有給就用for跑


呃,抱歉是我搞錯了...

 
ZeroJudge Forum