概述
/*
★实验任务
一群子在玩,规则是这样子,给了一些卡片,上面有数字,
现在要把卡片按照某一种序列排好,让这些数字重新链接组合成一个大数,
求最大数是什么。
★数据输入
第一行一个整数 N
接下来N行,每行一个整数ai,为第 i 张卡片上数值。(0<=ai<=100)
★数据输出
输出重新组合好大数。
输入示例 输出示例
3 999923
99
23
99
*/
#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;
}
最后
以上就是精明抽屉为你收集整理的小孩的游戏的全部内容,希望文章能够帮你解决小孩的游戏所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复