【入门】n个一位数能够组成的最小数——C++

题目

题目大意

请问n个一位数能够组成的最小的n位整数是多少。
比如,n=3,3个整数为3、1、9,那么组成的最小整数是139。
比如,n=4,4个整数为2、8、0、6,那么组成的最小整数是2068。

输入情况

第一行为一个整数n(n<10)
第二行为n个一位数

输出情况

一行,包含一个组成的最小整数。

用例输入&输出

4
7 3 4 4
3447

 题目分析

 题目类型&知识点

  这道题针对的是一维数组类型的题目。

 分析概要

 首先 对输入的数据进行保存

我们输入的是一个数字n表示第二行输入数字的多少

并且我们要记录第二行索要记录的数字。

所以我们可以先创建一个一维数组并且记录这些数字

#include<bits/stdc++.h>
//#include<iostream>
using namespace std;
int main()
{
    int a;
    cin>>a;//记录第一行的数字大小
    int arr[a];
    for(int i=0;i<a;i++) cin>>arr[i];
    //后面代码先忽略
    return 0;
}

接着 对数据进行处理

a.先将数组内的数据进行排序

我们要输出的数据是最小值

so 我们应该要将数据内的数字按小和大排序

这里我使用冒泡排序

for(int i=1;i<a;i++)
{
    for(int j=1;j<a;j++)
    {
        if(arr[i-1]>arr[i])
        {
            int temp=arr[i];
            arr[i]=arr[i-1];
            arr[i-1]=temp;
        }
    }
}
 b.除去0的可能性

当我们排好序时

题目中 有 2 0 6 8的输入 输出 则不是0268

如果有0则用比0大的最小数字来代替第一位

这里我用交换数组内数据的位置来实现程序

for(int i=0;i<a;i++)
{
    if(arr[i]!=0)
    {
        int temp=arr[i];
        arr[i]=arr[0];
        arr[0]=temp;
        break;
    }
}

这里arr[i]!=0是为了实现找寻不为0的数字

接着我们就进行数字的交换

最后 进行数据输出

for(int i=0;i<a;i++) cout<<arr[i];
//for(auto x:arr) cout<<x;

程序呈现

#include<bits/stdc++.h>
//#include<iostream>
using namespace std;
int main()
{
    int a;
    cin>>a;//记录第一行的数字大小
    int arr[a];
    for(int i=0;i<a;i++) cin>>arr[i];
    for(int i=1;i<a;i++)
	{
	    for(int j=1;j<a;j++)
	    {
	        if(arr[i-1]>arr[i])
	        {
	            int temp=arr[i];
	            arr[i]=arr[i-1];
	            arr[i-1]=temp;
	        }
	    }
	}
	for(int i=0;i<a;i++)
	{
	    if(arr[i]!=0)
	    {
	        int temp=arr[i];
	        arr[i]=arr[0];
	        arr[0]=temp;
	        break;
	    }
	}
	for(int i=0;i<a;i++) cout<<arr[i];
	//for(auto x:arr) cout<<x;
    return 0;
}

程序实现情况

1.不含0的数字

 2.含0的数字

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老冰安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值