#14715: 求大神幫忙抓錯


fdhs10549 (邱葵)

學校 : 桃園市私立復旦高級中學
編號 : 52664
來源 : [111.82.161.50]
最後登入時間 :
2024-05-17 16:12:08
a271. 彩色蘿蔔 -- 兔子 | From: [101.137.19.29] | 發表日期 : 2018-08-01 13:08

小弟我自己找不出錯誤 測試執行會錯誤,但是手動輸入正確

由於過往經驗我不相信測試執行,所以就直接送出

然後得到了一個NA

以下是我的程式碼

#include<iostream>
#include<string>
#include<cmath>
#include<cstdlib>
#include<fstream>
#include <vector>
using namespace std;

int main()
{
    int d,x,y,z,w,n,m;
    while(cin>>d)
    {
        for(int j=0;j<d;j++)
        {
            cin>>x>>y>>z>>w>>n>>m;
            cin.get();
            string in;
            getline(cin,in);
            int drug=0;
            for(int i=0;i<=in.length();i+=2)
            {
                m-=drug;
                if(m<=0)
                {
                    cout<<"bye~Rabbit\n";
                    break;
                }
                switch(in[i])
                {
                    case '1':
                        m+=x;
                        break;
                    case '2':
                        m+=y;
                        break;
                    case '3':
                        m-=z;
                        break;
                    case '4':
                        m-=w;
                        drug+=n;
                        break;
                }
                if(m<=0)
                {
                    cout<<"bye~Rabbit\n";
                    break;
                }
            }
            if(m>0)
            {
                cout<<m<<"g\n";
            }
        }
    }
}

以上

麻煩各位大大了

 
#14725: Re:求大神幫忙抓錯


kev8067@gmail.com (卓承緯)

學校 : 不指定學校
編號 : 74409
來源 : []
最後登入時間 :
2018-01-11 15:15:59
a271. 彩色蘿蔔 -- 兔子 | From: [114.136.171.94] | 發表日期 : 2018-08-01 14:45

小弟我自己找不出錯誤 測試執行會錯誤,但是手動輸入正確

由於過往經驗我不相信測試執行,所以就直接送出

然後得到了一個NA

以下是我的程式碼

 

#include
#include
#include
#include
#include
#include
using namespace std;

int main()
{
    int d,x,y,z,w,n,m;
    while(cin>>d)
    {
        for(int j=0;j<d;j++)
        {
            cin>>x>>y>>z>>w>>n>>m;
            cin.get();
            string in;
            getline(cin,in);
            int drug=0;
            for(int i=0;i<=in.length();i+=2)
            {
                m-=drug;
                if(m<=0)
                {
                    cout<<"bye~Rabbit\n";
                    break;
                }
                switch(in[i])
                {
                    case '1':
                        m+=x;
                        break;
                    case '2':
                        m+=y;
                        break;
                    case '3':
                        m-=z;
                        break;
                    case '4':
                        m-=w;
                        drug+=n;
                        break;
                }
                if(m<=0)
                {
                    cout<<"bye~Rabbit\n";
                    break;
                }
            }
            if(m>0)
            {
                cout<<m<<"g\n";
            }
        }
    }
}

以上

麻煩各位大大了

HIHI
for(int i=0;i<=in.length();i+=2)
這個地方我了解你的意思,但如果測資中有不預期的換行或空格就完蛋了。

所以我建議是check你的陣列in[]每一個位置,如果在'1'~'4'之間,再去做下面的算式。

你可以自己改改看,我有幫你改好 確定AC了

 

 
ZeroJudge Forum