[英]Why does my algorithm to output every digit of a sum fail In PTA?
我寫了一些代碼來解決下面的問題。 我試過一些測試用例,它們都通過了,但是當我提交自動標記答案時,結果是失敗。 我不知道問題出在哪里。
這是問題和相應的鏈接 :
1005正確拼寫(20分)
給定一個非負整數N,您的任務是計算N的所有數字的總和,並以英語輸出總和的每個數字。
輸入規格:
每個輸入文件包含一個測試用例。 每個案例占用一行包含N(≤10^ 100)的一行。
輸出規格:
對於每個測試用例,用英語單詞在一行中輸出總和的數字。 兩個連續的單詞之間必須有一個空格,但在行尾不能有多余的空格。
輸入樣例:
12345
樣本輸出:
one five
下面是我的代碼(提交到系統之前,需要將類名稱替換為Main):
package com.maxim.advance;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
scanner.close();
int length = input.length();
int sum = 0;
for (int index = 0; index < length; index++) {
sum += input.charAt(index) - '0';
}
// Consider sum == 0 case;
if (sum == 0) {
System.out.print("zero");
}
String[] names = new String[] {
"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"
};
List<String> outputs = new ArrayList<String> (100);
while (sum > 0) {
outputs.add(names[sum % 10]);
sum = sum / 10;
}
int size = outputs.size();
for (int i = size - 1; i >= 0; i--) {
if (i > 0) {
System.out.print(outputs.get(i) + " ");
} else {
System.out.print(outputs.get(i));
}
}
}
}
下面的C ++代碼正確且始終通過
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
cin>>s;
long int tmp=0;
for(int i=0;i<s.size();i++){
tmp+=(s[i]-'0');
}
string match[10]={"zero","one","two","three","four","five","six","seven","eight","nine"};
vector<string> v;
long int sum=tmp;
while(sum){
v.push_back(match[sum%10]);
sum/=10;
}
reverse(v.begin(),v.end());
if(tmp==0)//
cout<<"zero";
else
for(int i=0;i<v.size();i++){
if(i==0)
cout<<v[i];
else
cout<<" "<<v[i];
}
return 0;
}
作為一個網友的建議,它在我刪除package語句后通過了,這確實很奇怪。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.