// B1023 组个最小数 (20分).cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
/*
题意:
1、给出不超过50个数字,至少拥有一个非0数字,组个最小的数字,
注意第一个不为0
解题:
1、把所有数字输入,hash
2、遍历,输出第一个非0的数字,并且把他减掉,break
3、重新遍历,输出所有数字
learn && wrong:
1、scanf返回是一个读入的参数个数
2、为什么这题EOF错了!不清楚
3、题意理解错误,他直接给了你每一个位置上的数,不是单独一个数,
#include <iostream>
int hashtable[10] = { 0 };
using namespace std;
int main()
{
for(int i = 0;i < 10;++i){
cin>>hashtable[i];
}
for (int i = 1;i < 10;++i) { //找出第一个不为0的数字
if (hashtable[i] != 0) {
cout << i;
--hashtable[i];
break;
}
}
for (int i = 0;i < 10;++i) { //输出所有
while (hashtable[i] != 0) {
cout << i;
--hashtable[i];
}
}
return 0;
}
#include <iostream>
int hashtable[10] = { 0 };
using namespace std;
int main()
{
int temp;
int num = 0;
while (scanf("%d", &temp) != EOF) { //输入题目中所有数字
++hashtable[temp];
++num;
}
for (int i = 1;i < num;++i) { //找出第一个不为0的数字
if (hashtable[i] != 0) {
cout << i;
--hashtable[i];
break;
}
}
for (int i = 0;i < num;++i) { //输出所有
while (hashtable[i] != 0) {
cout << i;
--hashtable[i];
}
}
return 0;
}
网友评论