由于这题对于学过数据结构的我来说,真的是很简单,为了减少时间上的损失,链表无疑是最好的选择(因为数组要往后移位子)。然后,因为最近想玩些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. 空指针异常与Optional类

    一.什么是空指针异常 当程序需要对象实例的时候返回null就会抛出空指针异常(NullPointerException,简称NPE).包括以下情况: 调用一个null对象实例的方法 访问或修饰null ...

  2. php相关问题学习(以备面试)

    1.原味地址:[ http://www.yiichina.com/tutorial/57 ] 注:本文转自 http://www.icultivator.com/p/5535.html 整理了一份PH ...

  3. C:作用域

    作用域 C语言变量的作用域分为: 代码块作用域(代码块是{}之间的一段代码) 函数作用域 文件作用域 局部变量 局部变量也叫auto自动变量(auto可写可不写),一般情况下代码块{}内部定义的变量都 ...

  4. PAT 1013 Battle Over Cities (dfs求连通分量)

    It is vitally important to have all the cities connected by highways in a war. If a city is occupied ...

  5. Bugku-CTF加密篇之zip伪加密(flag.zip)

    zip伪加密

  6. 脚本中的random几率问题详解

    random解释: 没有固定数值,随即给的意思,数值越大就几率越低,跟爆率也不多,如下脚本,所有都抽不到的话,就会执行最后面没有检测条件的那个.   [@main] #if random 10 #ac ...

  7. 基于MHA的MYSQL高可用方案

    一.MHA 简介 MHA (Master High Availability )目前在 MySQL 高可用方面是一个相对成熟的解决方案,它由日本 DeNA 公司的 youshimaton 员工(现就职 ...

  8. SQLite3创建表及操作

    SQLite 创建表 SQLite 的 CREATE TABLE 语句用于在任何给定的数据库创建一个新表.创建基本表,涉及到命名表.定义列及每一列的数据类型. 语法 CREATE TABLE 语句的基 ...

  9. 解决 IDEA 下 struts.xml 中 extends="struts-default" 报红的问题

    现象 在IDEA中配置struts.xml时 extends="struts-default" 报红,配置拦截器时属性无预选项提示,也爆红. struts.xml本身的配置并没有错 ...

  10. Mysql常用的sql语句

    替换某字段的字符串: UPDATE article SET content = replace(content, '解决', '解放') WHERE ID<5000; 清空数据库,id也置空: ...