質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

1回答

1180閲覧

c言語atcorderの質問初歩的な質問

cgen

総合スコア17

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2021/08/30 15:32

atcorder beginnersselectionのCard Game for Two(https://atcoder.jp/contests/abs/tasks/abc088_b)を解いていて、入力した配列を降順にして偶数番目をアリスが、奇数番目をボブがとるというようにしてプログラムを書きました。
しかし、どこが間違っているのかわかりません。実行すると何も入力も出力もせずおわってしまいます。

問題文

N 枚のカードがあります. i 枚目のカードには,

ai​ という数が書かれています.
Alice と Bob は, これらのカードを使ってゲームを行います. ゲームでは, Alice と Bob が交互に 1 枚ずつカードを取っていきます. Alice が先にカードを取ります.
2 人がすべてのカードを取ったときゲームは終了し, 取ったカードの数の合計がその人の得点になります. 2 人とも自分の得点を最大化するように最適な戦略を取った時, Alice は Bob より何点多く取るか求めてください.
制約

N は 1 以上
100 以下の整数
ai​ (1≤i≤N) は 1 以上100 以下の整数

入力
入力は以下の形式で標準入力から与えられる.
N
a1​ a2​ a3​ ... aN​
出力
両者が最適な戦略を取った時, Alice は Bob より何点多く取るかを出力してください.

自分が書いたコード↓
#include <stdio.h>

int main(){
int n, i;
int a[n];
scanf("%d", &n);
for(i=0;i<n;i++){
scanf("%d", &a[i]);
}
int j, k, x, m, alice, bob;
k=0;
while(k<n){
for(j=1;j<n;j++){
if(a[j]>a[j-1]){
x=a[j-1]; a[j-1]=a[j]; a[j]=x;
}
}
k++;
}
alice=0; bob=0;
for(m=0;m<=n/2;m++){
alice=alice+a[2m];
bob=bob+a[2
m+1];
}
printf("%d", alice-bob);
return 0;
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

間違いは2箇所あります。

C

1int a[n]; 2scanf("%d", &n);

1つ目の間違いはここです。順序的に、nを読み取ってからでないと領域は確保できません。
(あと、可変長配列は、環境によってはサポートされていません。最大でも入力が100個なので、a[100]としてしまうほうが無難です。)

2つ目の間違いは、入力が奇数個の場合を想定していないことです。

C

1int adv = 0; 2for(m=0;m<n;m++){ 3 adv += (m%2 ? -a[m] : +a[m]); 4}

のように、点差を追っていくというやりかたもできます。

投稿2021/08/30 16:09

majiponi

総合スコア1720

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cgen

2021/08/30 16:34

できました!!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問