HDUGame with Pearls

xiaoxiao2021-02-28  21

                                                Game with Pearls

Tom and Jerry are playing a game with tubes and pearls. The rule of the game is: 1) Tom and Jerry come up together with a number K. 2) Tom provides N tubes. Within each tube, there are several pearls. The number of pearls in each tube is at least 1 and at most N. 3) Jerry puts some more pearls into each tube. The number of pearls put into each tube has to be either 0 or a positive multiple of K. After that Jerry organizes these tubes in the order that the first tube has exact one pearl, the 2nd tube has exact 2 pearls, …, the Nth tube has exact N pearls. 4) If Jerry succeeds, he wins the game, otherwise Tom wins. Write a program to determine who wins the game according to a given N, K and initial number of pearls in each tube. If Tom wins the game, output “Tom”, otherwise, output “Jerry”. Input The first line contains an integer M (M<=500), then M games follow. For each game, the first line contains 2 integers, N and K (1 <= N <= 100, 1 <= K <= N), and the second line contains N integers presenting the number of pearls in each tube. Output For each game, output a line containing either “Tom” or “Jerry”. Sample Input 2 5 1 1 2 3 4 5 6 2 1 2 3 4 5 5 Sample Output Jerry Tom

一个博弈题,因为数据量比较小,所以用暴力。对于每一个数都去判断它是否由对应的位置,有就把它放进去,并且标记这个位置已被占用。

但我感觉这种解法是错的,因为有可能是这种情况,假设在一串数中有两个数A B,A可以有两个位置(10st、15st)可以放,但B只能放到10st,根据我的解法,A会占用10st,B无处可放。

假AC代码:

#include <iostream> #include<algorithm> #include<stdlib.h> #include<stdio.h> #include<string.h> #include<math.h> #include<deque> #include<stack> using namespace std; bool cmp(int a,int b) { return a<b; } int main() { int t,n,k,i,p,j,flag=0; int con[110]; int check[110]; scanf("%d",&t); for(i=1;i<=t;i++) { flag=0; memset(check,0,sizeof(check)); scanf("%d%d",&n,&k); for(j=1;j<=n;j++) scanf("%d",&con[j]); sort(con+1,con+n+1,cmp); for(j=1;j<=n;j++) { while(1) { if(con[j]>n) break; if(check[con[j]]==0) { check[con[j]]=1; flag++; break; } con[j]+=k; } } if(flag==n) printf("Jerry\n"); else printf("Tom\n"); } return 0; }

转载请注明原文地址: https://www.6miu.com/read-2630491.html

最新回复(0)