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

    Platform是一种虚拟总线,Platform机制将设备本身的资源注册进内核,有内核统一管理,在驱动程序使用这些资源时使用统一的接口,这样提高了程序的可移植性. Linux的大部分设备驱动都可以使用 ...

  2. P&R 5

    Floorplan: 要做好floorplan需要掌握哪些知识跟技能? 通常,遇到floorplan问题,大致的debug步骤跟方法有哪些? 如何衡量floorplan的QA? 芯片的整体架构模块划分 ...

  3. 6_10 下落的树叶(UVa699)<二叉树的DFS>

    每年到了秋天树叶渐渐染上鲜艳的颜色,接着就会落到树下来.假如落叶发生在二叉树,那会形成多大的树叶堆呢?我们假设二叉树中的每个节点所落下的叶子的数目等于该节点所储存的值.我们也假设叶子都是垂直落到地面上 ...

  4. CI 框架批量添加数据(如果数据库有就更新数据)

    model: public function insert_select($values) { $sql = 'INSERT INTO ' . $this->_table_name . '(ar ...

  5. 微信支付开发h5调用

    这两天做微信支付开发.碰到大坑.纠结死我了.好不容做完. 后台java:直接上代码:注意区分前后端的变量大小写... @RequestMapping(value = "/index" ...

  6. BFS(广度优先搜索遍历保存全局状态,华容道翻版做法)--08--DFS--蓝桥杯青蛙跳杯子

    题目描述 X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色. X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去. 如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里边有一只青蛙 ...

  7. Oracle_11g_x64的安装与完全卸载

    安装: https://jingyan.baidu.com/article/363872eccfb9266e4aa16f5d.html 完全卸载: https://blog.csdn.net/m0_3 ...

  8. windows server 2016系统安装

  9. python获取当前文件的上一级目录

    import osos.path.dirname(os.path.abspath(__file__))

  10. HDU1540 Turnal Warfare

    线段树保存每个区间的左边最大连续长度和右边最大连续长度~ #include<cstdio> #include<cstring> #include<algorithm> ...