【基础编程】猜数字游戏的提示
来源:互联网 发布:淘宝幸运抽奖设置 编辑:程序博客网 时间:2024/05/05 00:16
★题目
★题目分析实现一个经典“猜数字”游戏。给定答案序列和用户猜的序列,统计有多少数字位置正确(A),有多少数字在两个序列都出现过但位置不对(B)
输入包括多组数据。每组输入第一行为序列长度n,第二行是答案序列,接下来是若干猜测序列。猜测序列全0时该组数据结束,n=0时输入结束。
样例输入:
4
1 3 5 5
1 1 2 3
4 3 3 5
6 5 5 1
6 1 3 5
1 3 5 5
输出样例:
1,1
2,0
1,2
1,2
4,0
★实现过程这个题目求B时难一些。问的是由多少数字在两个序列都出现过,即两个序列都要有,因此可以分别计数2个序列的中1~9的每个数字个数c1,c2,然后选取其中最小的min(c1,c2),这个最小的值就是1~9中某个数字在2个序列中出现的次数。然后将所有的min(c1,c2)进行相加,就求出了数字在序列中出现过,然后减去数字位置正确的数字,剩下的就是位置不对的数字了
#include<stdio.h>#include<string.h>#define MAX 100int a[MAX] = {0};int b[MAX] = {0};int main(){ int n,i,j,count_1,count_2,c1,c2,e,m; char c; while(scanf("%d",&n) != EOF && n!= 0) { for(i = 0;i < n;i++) scanf("%d",&a[i]); m = n; while(m--) { count_1=0; count_2=0; memset(d,0,sizeof(d)); memset(b,0,sizeof(b)); for(j = 0;j < n;j++) scanf("%d",&b[j]); for(i = 0;i < n;i++) { if(b[i] == a[i]) { count_1++; } } if(b[0] == 0) break; for(e = 1;e <= 9;e++) { c1=0; c2=0; for(i = 0;i < n;i++) { if(a[i] == e) c1++; if(b[i] == e) c2++; } if(c1 < c2) count_2+=c1; else count_2+=c2; } printf("%d %d\n",count_1,count_2-count_1); } } return 0;}
0 0
- 【基础编程】猜数字游戏的提示
- 猜数字游戏的提示
- 猜数字游戏的提示
- 猜数字游戏的提示
- UVA340-猜数字游戏的提示
- UVa 340 猜数字游戏的提示
- UVa 340 猜数字游戏的提示
- UVaOJ 340 猜数字游戏的提示
- uvaoj-340:猜数字游戏的提示
- 4.猜数字游戏的提示MasterMind
- UVa 340 Master-Mind Hints(猜数字游戏的提示)
- 例题3-4 猜数字游戏的提示 UVa340
- UVa 340 Master-Minds Hints(猜数字游戏的提示)
- 猜数字游戏的提示 算法竞赛入门经典
- 猜数字游戏的提示 (Master-Mind Hints, UVa 340)
- 猜数字游戏的提示(UVa 340)
- 3—4 猜数字游戏的提示
- Java编程----猜数字游戏
- Struts2和struts1的区别
- Android中消息传递机制
- hdu3974 线段树 编号的处理 dfs 加 lazy思想
- Linux安装Jdk、Tomcat、MySQL
- 【stm32F429开发日志】STM32F429上 NES 模拟器 移植 试玩
- 【基础编程】猜数字游戏的提示
- poj_1936 All in All(简单字符串)
- 机器学习系列(8)_读《Nature》论文,看AlphaGo养成
- java中throw与throws区别
- 王朝 年龄问题
- java数据库数据源框架原理--装饰模式和适配器模式
- Codeforces B. Complete the Word By Assassin
- 报表单元格的合并
- select()的阻塞机制