AC日记 - - - 22——数列有序

Problem Description

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

Input

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

Output

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

Example Input

3 3
1 2 4
0 0

Example Output

1 2 3 4

Hint

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 int main()
 4 {
 5     int num[200];
 6     int n, i, j=0, m;
 7     while(scanf("%d %d", &n, &m)!=EOF)
 8     {
 9         if(m==0&&n==0)
10         return 0;
11         for(i=0; i<n; i++)
12         scanf("%d", &num[i]);
13
14         for(i=0; i<n; i++)
15         if(num[i]>m)//找到第一个比m大的数的位置。
16         break;
17
18         for(j=n; j>i; j--)//从第一个比 m 大的数开始整体后移一位。
19         num[j]=num[j-1];
20         num[i]=m;//将 m 赋给第一个比他大的数, 即进行插序。
21
22         for(i=0; i<=n; i++)
23        {
24          if(i==0)
25          printf("%d", num[i]);
26          else
27          printf(" %d", num[i]);
28        }
29          printf("\n");
30     }
31 }

原文地址:https://www.cnblogs.com/Jie-Fei/p/8297424.html

时间: 2024-08-02 19:45:11

AC日记 - - - 22——数列有序的相关文章

HDU2019 数列有序!

问题链接:HDU2019 数列有序!.入门训练题,用C语言编写程序. 也许对于本题,会考虑用插入排序来做,那就有点绕远了.只要做排序就有可能可能做数据交换,处理时间就长了. 可以考虑输入的n个数据先存放在数组中,再输出. 各种方案中,一边输入数据,一边输出数据,并且在适当位置输出m的做法,应该是优选方案.因为这样做,省去了数组,没有使用额外空间. AC程序如下(正解): /* HDU2019 数列有序! */ #include <stdio.h> int main(void) { int n,

杭电 2019 数列有序!

http://acm.hdu.edu.cn/showproblem.php?pid=2019 数列有序! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 44844    Accepted Submission(s): 19451 Problem Description 有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给

AC日记——Aragorn&#39;s Story HDU 3966

Aragorn's Story Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 10510    Accepted Submission(s): 2766 Problem Description Our protagonist is the handsome human prince Aragorn comes from The Lor

hdoj-2019 数列有序!【水】

数列有序! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 59240    Accepted Submission(s): 25564 Problem Description 有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序. Input 输入数据包含多个测试实例

hdu 2018 数列有序!(java)

问题: 再插入数字时,没有中断循环,导致从输入数处再次循环,如下错误结果: 3 3 1 2 4 1 2 3 3 4 3 1 2 4 5 1 2 3 3 4 当循环完成后记得中断: 数列有序! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 57301    Accepted Submission(s): 24693 Problem De

1933: 数列有序!

1933: 数列有序! Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 130  Solved: 50[Submit][Status][Web Board] Description 有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数m,请将该数插入到序列中,并使新的序列仍然有序. Input 输入数据包含多个测试实例,每组数据由两行组成,第一行是n和m,第二行是已经有序的n个数的数列.n和m同时为0标示输入数据的结束,本行不做处

AC日记——紧急措施 openjudge 1.7 22

22:紧急措施 总时间限制:  1000ms 内存限制:  65536kB 描述 近日,一些热门网站遭受黑客入侵,这些网站的账号.密码及email的数据惨遭泄露.你在这些网站上注册若干账号(使用的用户名不一定相同),但是注册时使用了相同的email.你此时拿到了那份泄露的数据,希望尽快将自己的密码更改.策略如下:根据email找到你的用户名和密码,然后更改密码.更改的规则为:小写和大写交换,非字母字符保持不变. 输入 第一行为你的email地址,长度不超过50个字符且只包含字母.数字和‘@’符号

AC日记——斐波那契数列 洛谷 P1962

斐波那契数列 思路: 矩阵快速幂: 来,上代码: #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define mod 1000000007 struct MatrixType { long long ai[3][3]; void mem() { for(int i=0;i<3;i++) { for(i

AC日记——最大数 洛谷 P1198 [JSOI2008]

题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值. 限制:L不超过当前数列的长度. 2. 插入操作. 语法:A n 功能:将n加上t,其中t是最近一次查询操作的答案(如果还未执行过查询操作,则t=0),并将所得结果对一个固定的常数D取模,将所得答案插入到数列的末尾. 限制:n是整数(可能为负数)并且在长整范围内. 注意:初始时数列是空的,没有一个数. 输入输出格式 输入格式: 第一行两个整数,M