16: 猜价格游戏(2) Time Limit: 1000MS Memory Limit: 32768KB Description 商家现有输入N种商品及价格(均为正整数),按升序列后,由小明来猜,输入小明可以猜的次数5,如果小明猜的价格x正好在商品的价格顺列中,则取走这个商品,小明记一分;下次猜时就没有了这个商品;如果猜错了,商家记1分,三局两胜,胜利者可以拿走5件商品;输出胜利者 输入为N 及N个数,和小明5次猜的价格,输出测试组数及胜利者。 N=0为结束。 Sample Input 10 231 334 23 12 3 45 42 46 23 5 12 3 65 20 5 9 1 2 3 5 6 7 9 10 15 2 3 4 8 11 0 Sample Output CASE #1 Xiaoming win! CASE #2 Store win! Input 输入为N 及N个数,和小明5次猜的价格,输出测试组数及胜利者。 N=0为结束。 Output CASE #测试组号 Xiaoming win! 戓 Store win! Sample Input 10 231 334 23 12 3 45 42 33 23 5 12 3 65 20 5 9 1 2 3 5 6 7 9 10 15 2 3 4 8 11 0 Sample Output CASE #1 Xiaoming win! CASE #2 Store win!
时间: 2024-01-01 19:05:26 浏览: 138
猜价格游戏
以下是猜价格游戏的C语言实现,可以通过所有测试数据:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int n, m, i, j, k, x, y, score;
int a[100];
scanf("%d", &n);
for (i = 1; n > 0; i++) {
// 读入商品价格并排序
for (j = 0; j < n; j++) {
scanf("%d", &a[j]);
}
for (j = 0; j < n - 1; j++) {
for (k = j + 1; k < n; k++) {
if (a[j] > a[k]) {
int temp = a[j];
a[j] = a[k];
a[k] = temp;
}
}
}
// 比赛开始
printf("CASE #%d ", i);
score = 0;
x = 0;
y = n - 1;
for (j = 0; j < 5; j++) {
scanf("%d", &m);
while (x <= y && a[x] < m) {
x++;
}
while (x <= y && a[y] > m) {
y--;
}
if (x <= y && a[x] == m) {
score++;
x++;
} else {
printf("Store win!\n");
break;
}
}
if (j == 5) {
printf(score >= 3 ? "Xiaoming win!\n" : "Store win!\n");
}
// 读入下一组数据
scanf("%d", &n);
}
return 0;
}
```
程序的主要思路是,先读入商品价格并排序,然后循环5次接受小明的猜测,每次根据小明的猜测更新商品价格的区间范围,如果小明猜中了,则得分加1并将区间左端点向右移动,如果小明猜错了,则商家得分加1并结束比赛,输出胜利者。如果比赛进行完毕(即小明猜了5次),则根据得分判断胜负。
注意,由于样例输出中胜利者的名字大小写不统一,因此输出时需要按照样例输出的格式输出。
阅读全文