#14715: 求大神幫忙抓錯


fdhs10549 (邱葵)


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

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

然後得到了一個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 (卓承緯)


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

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

然後得到了一個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了