B1023 组个最小数 (20分)

2020-01-31  本文已影响0人  km15

// 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;
}
上一篇 下一篇

猜你喜欢

热点阅读