1171: 零起点学算法78——牛牛(有错误)(已AC)

本文介绍了一种基于牛牛游戏的算法实现方法,通过分析5张牌的组合来判断是否有牛及牛的等级。提供了两段C语言代码示例,详细解释了如何找出特定条件下最优解的过程。

1171: 零起点学算法78——牛牛

Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lld
Submitted: 951  Accepted: 437
[Submit][Status][Web Board]

Description

 

牛牛是一种纸牌游戏,总共5张牌,规则如下:
如果找不到3张牌的点数之和是10的倍数,则为没牛;
如果其中3张牌的点数之和是10的倍数,则为有牛,剩下两张牌的点数和对10取余数,余数是几,就是牛几,特别的当余数是0的时候是牛牛;
例如: 1 2 3 4 5, 1 + 4 + 5 = 0 (mod 10),2 + 3 = 5(mod 10), 为牛5。 

 

 

Input

第一行输入一个整数T(T <= 100),表示有几组数据。每组数据占一行,5 个数, 每个数的范围都是1到10。 

 

Output

见样例。 

 

Sample Input

 
3
1 1 1 1 1
1 2 3 4 5
1 9 10 10 10

 

Sample Output

Case #1: Mei Niu
Case #2: Niu 5
Case #3: Niu Niu

 

Source

 
 1 #include<stdio.h>
 2 #include<math.h>
 3 int main(){
 4     int t,a[5],o=0;
 5     scanf("%d",&t);
 6     while(t--){
 7         for(int i=0;i<5;i++){
 8             scanf("%d",&a[i]);
 9         }
10         o++;
11         int m=0,n=0,sum;
12         for(int i=0;i<3;i++){
13             for(int j=i+1;j<4;j++){
14                 for(int k=j+1;k<5;k++){
15                     if((a[i]+a[j]+a[k])%10==0){
16                         m=1;
17                         sum=0;
18                         for(int p=0;p<5;p++){
19                             if(a[p]!=a[i]&&a[p]!=a[j]&&a[p]!=a[k]) sum+=a[p];
20                         }
21                         if(sum%10==0) n=1;
22                     }
23                 }
24             }
25         }
26         if(m==0) printf("Case #%d: Mei Niu\n",o);
27         else{
28             if(n) printf("Case #%d:Niu Niu\n",o);
29             else printf("Case #%d:Niu %d\n",o,sum%10);
30         }
31     }
32     return 0;
33 }

运行无错误,提交 wrong answer

 

 1 #include<stdio.h>
 2 int main(){
 3     int t,a[5];
 4     while(scanf("%d",&t)!=EOF){
 5             int o=0;
 6     while(t--){
 7         for(int i=0;i<5;i++){
 8             scanf("%d",&a[i]);
 9         }
10         o++;
11         int m=0,n=0,sum;
12         for(int i=0;i<3;i++){
13             for(int j=i+1;j<4;j++){
14                 for(int k=j+1;k<5;k++){
15                     if((a[i]+a[j]+a[k])%10==0){
16                         m=1;
17                         sum=0;
18                         for(int p=0;p<5;p++){
19                             if(a[p]!=a[i]&&a[p]!=a[j]&&a[p]!=a[k]) sum+=a[p];
20                         }
21                         if(sum%10==0) n=1;
22                     }
23                 }
24             }
25         }
26       if(m){
27         if(n){
28             printf("Case #%d: Niu Niu\n",o);
29         }
30         else printf("Case #%d: Niu %d\n",o,sum%10);
31       }
32       else printf("Case #%d: Mei Niu\n",o);
33     }
34     }
35     return 0;
36 }

1.多组输入 尽量不要让程序自动结束。

2.注意输出格式注意输出格式注意输出格式,重要的事说三遍。第一次没有注意前面有空格。 

转载于:https://www.cnblogs.com/dddddd/p/6687213.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值