/*
★实验任务
一群子在玩,规则是这样子,给了一些卡片,上面有数字,
现在要把卡片按照某一种序列排好,让这些数字重新链接组合成一个大数,
求最大数是什么。
★数据输入
第一行一个整数 N
接下来N行,每行一个整数ai,为第 i 张卡片上数值。(0<=ai<=100)
★数据输出
输出重新组合好大数。
输入示例 输出示例
3 999923
99
23
99
*/
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66#include <iostream> using namespace std; int main() { int n,t,i,j; int a[101]={0};//本题中卡片的值最大为100,所以开设101个数组 cin >> n; for(i=0;i<n;i++) { cin >> t;//输入卡片的值 a[t]++; //将下标为该值的数组加一 } for(i=9;i>=1;i--)//进行比较 { if(a[i]>0)//先从一位数开始 { for(j=9;j>i;j--) { //例如 i=7,判断是否有77,78,79这些数 //如果有,则输出,否则就输出若干个7 while(a[i*10+j]!=0) { cout << i*10+j ; a[i*10+j]--; } } while(a[i]!=0) { cout << i ; a[i]--; } //当前面的输出完以后,再输出76,75。。。70这些数 for(j=i;j>=0;j--) { while(a[i*10+j]!=0) { cout << i*10+j ; a[i*10+j]--; } } } else//如果没有一位数的情况 {//直接按顺序输出 for(j=9;j>=0;j--) { while(a[i*10+j]!=0) { cout << i*10+j ; a[i*10+j]--; } } } } while(a[100]!=0)//单独考虑100 { cout << 100; a[100]--; } while(a[0]!=0)//单独考虑0 { cout << 0; a[0]--; } return 0; }
最后
以上就是精明抽屉最近收集整理的关于小孩的游戏的全部内容,更多相关小孩内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复