由于这题对于学过数据结构的我来说,真的是很简单,为了减少时间上的损失,链表无疑是最好的选择(因为数组要往后移位子)。然后,因为最近想玩些STL的骚操作,所以就用<list>了,然后顺便学了下迭代器的用法,其原理其实和指针差不多,就是比指针安全。然后,在a题的过程中发现指针的+—还是有些问题的,所以,就用数值代替了。闲话不多说,奉上ac代码:

#include <iostream>
#include<math.h>
#include <iomanip>
#include<cstdio>
#include<string>
#include<map>
#include<vector>
#include<list>
#include<algorithm>
#include<stdlib.h>
#include<iterator>
using namespace std; int main()
{
int n,m;
while(cin>>n>>m)
{
if(n==&&m==){
break;
} list<int>num;
list<int>::iterator p;
list<int>::iterator q;
list<int>::iterator r,beg,e_d;
int ck;
for(int i=;i<n;i++){
cin>>ck;
num.push_back(ck);
} q=num.begin();
for(p=num.begin();p!=num.end();p++){
if(*p>=m)
{
q=p;
break;
}
}
num.insert(q,m);
// beg=num.begin();
// e_d=num.end()--; int daxiao=num.size();
r=num.begin();
for(int i=;i<daxiao;r++){ if(i<daxiao-)
{
cout<<*r<<" ";
}
else{
cout<<*r;
}
i++; }
cout<<endl; } return ;
}

然后,再奉上用数组写的代码:

#include <iostream>

using namespace std;

int main()
{
int n,m,*input_str,flag=-;
while(cin>>n>>m)
{
//n=0,m=0结束输入
if(n==&&m==)break;
//为输入的数据分配空间,因为最后要插入一个数,所以分配大小为n+1
input_str=new int[n+]; for(int i=; i<n; i++)
{
cin>>input_str[i];
//flag记住第一次比m大的位置,最后是要把m放在flag这个位置
if(input_str[i]>=m&&flag==-)
{
flag=i;
}
}
for(int j=n; j>flag; j--)
{
//将flag后面的元素都后移1位
input_str[j]=input_str[j-];
}
//将m放入flag位置
input_str[flag]=m;
//格式输出
for(int k=; k<n+; k++)
{
if(k==n) cout<<input_str[k]<<endl;
else
cout<<input_str[k]<<" ";
}
//重新初始化flag,方便下次使用
flag=-;
delete input_str;
}
return ;
}

杭电2019 数列有序!(STL解法)的更多相关文章

  1. 杭电ACM2019--数列有序!

    数列有序! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  2. hdu 2019:数列有序!(数据结构,直接插入排序+折半插入排序)

    数列有序! Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submiss ...

  3. HDU 2019 数列有序!

    Time Limit: 1000 MS Memory Limit: 32768 KB 64-bit integer IO format: %I64d , %I64u   Java class name ...

  4. 杭电ACM2009--求数列的和

    求数列的和 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  5. HDOJ 2019 数列有序!

    #include<vector> #include<iostream> #include<algorithm> #include<cstdio> usi ...

  6. 杭电2019多校第八场 Acesrc and Good Numbers——思维打表&&oeis

    题意 给定 $d,x$,$f(d,k)$ 表示 $1 \sim k$ 中 $d$ 出现的次数, $k$ 满足 $f(d,k) = k$,求小于 $x$ 的最大的 $k$. 分析 正解不会...,学习了 ...

  7. 杭电2019多校第一场,Problem I,String 2019

    题目描述 Tom has a string containing only lowercase letters. He wants to choose a subsequence of the str ...

  8. 杭电OJ第11页2010-2019道题(C语言)

    2010. 水仙花数 问题描述 Problem Description 春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: "水仙花数"是指一个三位 ...

  9. 杭电oj2012-2021

    2012  素数判定 #include <stdio.h> #include <math.h> int main() { int x,y,i,j,a,flag; while(s ...

随机推荐

  1. Hello 2020D(多重集)

    如果有一对时间对在某一场馆有时间重合而这一对时间对在另一场馆没有时间重合,则输出NO,否则输出YES. #define HAVE_STRUCT_TIMESPEC #include<bits/st ...

  2. 【Vue实例生命周期】

    目录 实例创建之前执行--beforeCreate 实例创建之后执行--created 挂载之前执行--beforeMount 挂载之后执行--mounted 数据更新之前执行--beforeUpda ...

  3. Windows系统重装记录

    材料: u盘(需4g以上) windows官方镜像 附:windows个版本比较 步骤: u盘格式化(为了装启动盘系统需要清空数),备份系统盘所需要的的数据 下载适合自己的官方镜像,可从该网站下载(官 ...

  4. Linux03——磁盘分区和挂载

    Windows下的磁盘分区: 常用的两种磁盘分区类型 mbr: 操作系统安装在主分区 只支持4个主分区 拓展分区占一个主分区 gpt(win7 64位之后) 无限主分区 支持超大硬盘3T以上 查看所有 ...

  5. mybaitis

    resultType="java.util.HashMap" SELECT DISTINCT c.COMPANY_LEVEL, ) over ( partition BY COMP ...

  6. RabbitMQ连接池、生产者、消费者实例

    1.本文分享RabbitMQ的工具类,经过实际项目长期测试,在此分享给发家,各位大神有什么建议请指正 !!! 2.下面是链接池主要代码: import java.util.HashMap; impor ...

  7. 04-Docker-Container管理操作

    目录 04-Docker-Container管理操作 参考 容器运行须知 容器生命周期 容器管理命令 1. 生命周期 2. 查看操作 3. 命令执行 4. 文件复制 容器用途分类 04-Docker- ...

  8. powerbuilder连接oracle数据库

    一.打开已经安装好的pb9.0,主界面菜单栏有个两个圆柱形就行数据库连接,点击database. 二.选择oracle版本,由于数据库版本是9i,可以使用084 oracle8/8i.右键--选择ne ...

  9. @Value注解的使用

    前提它需要在spring 管理的Bean中有效 (如@Service...) #{...} 此方式可以使用 SpEL 表达式如 #{30-15} ${...} 可以获取配置文件中的值 如 ${jwt. ...

  10. 【代码审计】VAuditDemo 文件包含漏洞

    在 index.php中先判断get过来的module是否设置了变量,如果已经设置,则包含module,并与字符串.inc拼接 inc格式一般是图标或者头像格式,因此我们可以初步判断,这个包含应该是基 ...