hduoj 2019数列有序
2017-03-13 23:39
232 查看
#include<iostream> using namespace std; int main() { int n,m,j; int a[101]; while(scanf("%d %d",&n,&m)!=EOF) { if(n==0&&m==0) break; int i=0,j=0,flag=0; /*注意定义的flag在这里是作为一个找到位置的标志,防止持续的比较交换, 且切记flag要设立在for循环外 */ for(i=0,j=0;i<n;i++,j++) //这里的i和j的用法十分巧妙,i仅用作循环次数不参与数组,j参与 { cin>>a[j]; if(a[j]>m&&flag==0) //找到之后将下一个数赋值为m,同时要j++要使用两次! { a[j+1]=a[j]; a[j]=m; flag=1; j++; } } for(i=0;i<=n;i++)//这也是新的一种输出的方式,和之前用的标记法比起来 这个更加简便 { if(i>0) cout<<" "; cout<<a[i]; } cout<<endl; } return 0; }
这个题目体会挺多
相关文章推荐