お世話になります。
先日も当該の問題について質問させていただいたAtCoder初心者です。問題はこちらをご覧いただければと思います。
ご回答を元にプログラムを修正し、テストケースについては正しい出力ができるのですが、提出すると3件がAC,18件がREとなってしまいました。AtCoderでは下記のように説明されているのですが、具体的にどの箇所が問題なのか、どのように修正すべきか見当がつきません。ご教示いただけますと幸いです。
RE (Runtime Error) プログラムの実行中にエラーが発生しました。コンパイル時に検知できなかったエラーがあります.スタックオーバーフロー、ゼロ除算などが原因です.
方針としては下記です。
1、標準入力から得た配列numbsに対し繰り返し処理をします。
2、この配列numbsの要素を一部分取り出したスライスaryを作り、問題文で定義された操作を行います。ループのたびにaryの長さは1からNまで1ずつ増やします。
3、操作後の配列要素の総和を出力して次の繰り返し処理を行います。
Go
1package main 2 3import ( 4 "bufio" 5 "fmt" 6 "os" 7 "strconv" 8 "strings" 9) 10 11var sc = bufio.NewScanner(os.Stdin) 12 13func main() { 14 s, t := nextLine(), nextLine() 15 N, _ := strconv.Atoi(s) 16 words := strings.Fields(t) 17 numbs := StrToInt(words) 18 for i := 1; i <= N; i++ { 19 ary := numbs[0:i] 20 x := make([]int, i) 21 copy(x, ary) 22 for k, _ := range x { 23 x[k] += maxInt(x) 24 } 25 fmt.Println(Sum(x)) 26 } 27} 28 29func nextLine() string { 30 sc.Scan() 31 return sc.Text() 32} 33 34// 最大値を求める。 35func maxInt(s []int) int { 36 max := s[0] 37 for i := 1; i < len(s); i++ { 38 if max < s[i] { 39 max = s[i] 40 } 41 } 42 return max 43} 44 45//総和を求める。 46func Sum(arr []int) int { 47 ret := 0 48 for i := 0; i < len(arr); i++ { 49 ret += arr[i] 50 } 51 return ret 52} 53 54//型変換(文字列から整数) 55func StrToInt(str []string) []int { 56 f := make([]int, len(str)) 57 for n := range str { 58 f[n], _ = strconv.Atoi(str[n]) 59 } 60 return f 61} 62
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/26 23:35 編集
2021/05/28 16:53