#include <bits/stdc++.h>
using namespace std;
int main()
{
int num;
while (cin >> num){
for (int i=1; i<=num; i++){
int x, y, z, w, n, m, count=0, b=0;
cin >> x >> y >> z >> w >> n >> m;
string s;
getline(cin,s);
getline(cin,s);
if (s.length()==0){
cout << m << '\n';
continue;
}
for (int j=0; j<=s.length(); j=j+2){
m-=count*n;
if (m<0){
cout << "bye~Rabbit" << '\n';
b=1;
break;
}
if (s[j]=='1'){
m+=x;
}
else if (s[j]=='2'){
m+=y;
}
else if (s[j]=='3'){
m-=z;
}
else if (s[j]=='4'){
m-=w;
count++;
}
}
if (b==0){
cout << m << 'g' << '\n';
}
}
}
return 0;
}
for (int j=0; j<=s.length(); j=j+2){
找了好久終於找到問題了。可能是因為測資中有多餘的空格,所以不能這樣寫
你可以把j=j+2改成j++,然後下面再判斷j是否是空格
辛苦了謝謝
後來我還有發現一些問題
#include <bits/stdc++.h>
using namespace std;
int main()
{
int num;
while (cin >> num){
for (int i=1; i<=num; i++){
int x, y, z, w, n, m, count=0, b=0;
cin >> x >> y >> z >> w >> n >> m;
string s;
getline(cin,s);
getline(cin,s);
if (s.length()==0){
cout << m << 'g' << '\n';
continue;
}
for (int j=0; j<s.length(); j++){
if (s[j] != ' '){
m-=count*n;
if (m<0){
cout << "bye~Rabbit" << '\n';
b=1;
break;
}
if (s[j]=='1'){
m+=x;
}
else if (s[j]=='2'){
m+=y;
}
else if (s[j]=='3'){
m-=z;
}
else if (s[j]=='4'){
m-=w;
count++;
}
if (m<0){
cout << "bye~Rabbit" << '\n';
b=1;
break;
}
}
}
if (b==0){
cout << m << 'g' << '\n';
}
}
}
return 0;
}