pat 组最小的数

每日一记,声明下,代码是借鉴大神的,只是自己做了一下自己的分析,本意也是为了加深对代码编写的能力,希望能对大家有益:

分析:

首先用一个十维的数字存放每个数字的个数

循环从第一个开始输出最小的数(首位不得为零)

循环从零开始输出

由于第一个数字已经输出,所以接下来应将对应的数字个数减去一个

循环直接从第一个数字往后遍历,依次输出数字


#include<iostream>
using namespace std;


int main()
{
	int a[10], t;
	for (int i = 0;i < 10;i++)
		cin >> a[i];//将输入数字存放在数组中
	for (int i = 1;i < 10;i++) {
		if (a[i] != 0) {
			cout << i;
			t = i;
			break;//注意,输出首位后应停止向后遍历

		}
	}
	for (int i = 0;i < a[0];i++)  //存在零的话就将零放在首位后依次输出
		cout << 0;
	for (int i = 0;i < a[t] - 1;i++)//首位非零,输出最小的数字,减去一位,把剩下的输出去
		cout << t;
	for (int i = t + 1;i < 10;i++)//  为了高效,紧接着下个位置遍历
		for (int k = 0;k < a[i];k++)
			cout << i;
	system("pause");//可有可无,功能是停留在结果上便于观察。
    return 0;
}

猜你喜欢

转载自blog.csdn.net/Li060703/article/details/88774016