- 2023新生练习赛专题6(数组2)
#A. 【入门】n个一位数能够组成的最大数
- 2023-10-14 13:53:09 @
先看一下题目
说明
请问n个一位数能够组成的最大的整数是多少。 比如,n=3,3个整数为1、3、9,那么组成的最大整数是931。 比如,n=4,4个整数为2、8、0、6,那么组成的最大整数是8620。
输入格式
第一行为一个整数n(n<10) 第二行为n个一位数
输出格式
一行,包含一个组成的最大整数。
输入数据 1
4
7 3 4 4
输出数据 1
7433
那么,其实就是先输入一个n代表数字的个数,然后把这n个数字组成一个最大的数字,那其实就是把这些数字进行排序,这里就要用到数组来存储这些数字,并且进行排序,最后输出。
先来看设一个数组输入数据的部分
int n;//设置n
scanf("%d",&n);//n赋值
int shuzu[n];//创建一个大小为n的数组
for(int i=0;i<n;i++){
scanf("%d",&shuzu[i]);//输入n个数字
}
这里应该是简单易懂,通过循环来输入数字,然后我们只要将数组排序,然后输出就可以了
下面是排序部分,排序最简单的是冒泡排序,原理就是,它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行,直到没有相邻元素需要交换,也就是说该元素列已经排序完成。 代码展示
int temp;
for (int i=0;i<n-1;i++) {
for (int j=0;j<n-i-1;j++) {
if (shuzu[j]>shuzu[j+1]) {
temp =shuzu[j];
shuzu[j]=shuzu[j + 1];
shuzu[j+1]=temp;
}
}
}
最后,输出数组
for(int i=n-1;i>=0;i--){
printf("%d",shuzu[i]);//这里是冒泡排序的时候派成从小到大了,所以从最后一个输出
}
最后的最后,完整代码展示
#include<stdio.h>
int main(){
int n;//设置n
scanf("%d",&n);//n赋值
int shuzu[n];//创建一个大小为n的数组
for(int i=0;i<n;i++){
scanf("%d",&shuzu[i]);//输入n个数字
}
int temp;
for (int i=0;i<n-1;i++) {
for (int j=0;j<n-i-1;j++) {
if (shuzu[j]>shuzu[j+1]) {
temp =shuzu[j];
shuzu[j]=shuzu[j + 1];
shuzu[j+1]=temp;
}
}
}
for(int i=n-1;i>=0;i--){
printf("%d",shuzu[i]);//这里是冒泡排序的时候派成从小到大了,所以从最后一个输出
}
return 0;
}
2 条评论
-
Tu sais LV 2 SU @ 2023-10-14 19:27:18
tql(=-=)
-
2023-10-14 13:58:01@
tql(QAQ)
- 1