POJ 1323: Game Prediction
1023 ワード
タイトルはこちら
問題を解く構想:手札は小さいから大きいまで並べ替えます.現在局の最大手札はn*mから減少し、自分の札面が現在最大であれば、勝局に1を加えなければならない.そうしないと必ず負ける.
とても簡単な問題で、弁解しないで、コードをつけます:
問題を解く構想:手札は小さいから大きいまで並べ替えます.現在局の最大手札はn*mから減少し、自分の札面が現在最大であれば、勝局に1を加えなければならない.そうしないと必ず負ける.
とても簡単な問題で、弁解しないで、コードをつけます:
#include <cstdio>
#include <algorithm>
//
int card[51];
int main() {
int m, n, c = 1;
while (scanf("%d %d", &m, &n) && (m || n)) {
for (int i = 0; i < n; ++i) {
scanf("%d", &card[i]);
}
std::sort(card, card + n);
// cm
int cm = m * n;
int won = 0, lose = 0;
int i = n - 1;
while (true) {
// , ;
// ,cm 1
if (cm == card[i])
++won;
else {
++lose;
--cm;
}
// ,
if (won + lose == n) {
break;
}
--i, --cm;
}
printf("Case %d: %d
", c, won);
++c;
}
return 0;
}