杭电acm2019数列有序!——c语言

it2026-09-21  2

数列有序

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 156273 Accepted Submission(s): 63594

Problem Description 有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序。

Input 输入数据包含多个测试实例,每组数据由两行组成,第一行是n和m,第二行是已经有序的n个数的数列。n和m同时为0标示输入数据的结束,本行不做处理。

Output 对于每个测试实例,输出插入新的元素后的数列。

Sample Input 3 3 1 2 4 0 0

Sample Output 1 2 3 4

#include<stdio.h> int main(void){ int i,n,m,num,tem; int a[101]; while(scanf("%d %d",&n,&m)!=EOF){ if(n==0&&m==0) //判断是否是结束条件 break; if(n==0) //判断数列是否为空 printf("%d\n",m); if(n!=0){ int num=0; for(i=0;i<n;i++){ scanf("%d",&a[i]); if(m>a[i]) num=i+1; //记录比m小的最后一位下标 } for(i=n-1;i>=num;i--) //等于大于m的值往后移 a[i+1]=a[i]; a[num]=m; n++; printf("%d",a[0]); for(i=1;i<n;i++){ printf(" %d",a[i]); } printf("\n"); } } }

这道题需要注意数组的下标,只需要找到比m值小的最后一位数值的下标,然后把m插入该数组位置的后一位就可以了。

最新回复(0)