1. 程式人生 > >7-3 組個最小數 (20 分)

7-3 組個最小數 (20 分)

#include <bits/stdc++.h>

using namespace std;

int main() {

	int a[50];
	int n, i = 0, j = 0,t;
	//scanf("%d", &n);

	for (; i < 10; i++)
		scanf("%d", &a[i]);
	if (a[0] == 0)
	{
		for (i = 1; i <10; i++)
			for (j = 0; j < a[i]; j++)
				printf("%d", i);
	}
	else
	{
		for (i = 1; i <10; i++)
			if (a[i] != 0)
			{
				t = i;
				break;
			}

		if (i != 10)
		{
			printf("%d", i);
			for (i = 0; i < a[0]; i++)
				printf("0");
			for (i = 1; i < a[t]; i++)
				printf("%d", t);
			for (i = t + 1; i < 10; i++)
				for (j = 0; j < a[i]; j++)
					printf("%d", i);
		}
		else
			printf("0");

	}
	system("pause");

	return 0;
}

寫出這個題相當於把迴圈和陣列結合已經理解了

思路:

1,先看是否有“0“存在 如果存在-->2a,不存在 —》2b

2a》利用一個for迴圈把第一個不等於的0的開始找 如果有-》3a 如果沒有 -》3b。

2b》利用兩個for迴圈來輸出;

3a>找出之後先出一次這個數 ,然後在輸出0 之後在用兩個for迴圈順序輸出每個數。

3b>無論a[0]等於多少 均輸出一個0

感悟知識點 ; 1,找陣列中下標 最小的下標從前往後找 最大的下標從後往前找 如果全部輸出不要忘了 在陣列中沒有這個數的情況 需要在迴圈外面判斷。