您的位置:首页 > 其它

451B - Sort the Array

2014-08-17 23:18 441 查看
这道题的意识是给你一个整形数组,含有很多数字,然后让你通过讲中间的某一个字串颠倒过来,让他成为不下降的数组。其实这题都是特简单的,只要你找到一个不满足上升的字串,然后反过来,直接break,最后判断是不是非下降排列即可。

#include<iostream>
using namespace std;
#include<cstring>
#include<stdio.h>
int a[100005];
int main()
{
    int N;
    int i,j,k;
    while(cin>>N)
    {
        k=0;//标记
        int i1=0,j1=0;
        for(i=0;i<N;i++)
            scanf("%d",&a[i]);
        for(i=0;i<N-1;i++)
            {
                if(a[i]>a[i+1])
                {
                    if(!k)
                    {
                    k=1;
                    i1=i;
                    }
                }
                else if(k)
                {
                    j1=i;
                   break;
                }
            }
            if(k&&j1==0)j1=N-1;
           // cout<<i1<<" "<<j1<<endl;
            k=j1;
        for(i=i1;i<=(j1+i1)/2;i++,k--)
        {
            j=a[i];
            a[i]=a[k];
            a[k]=j;
        }
        k=0;
        for(i=0;i<N-1;i++)
            if(a[i]>a[i+1])
            {
                    k=1;
            break;
            }
       // for(i=0;i<N;i++)
         //   cout<<a[i]<<" ";
        if(k)cout<<"no"<<endl;
        else {
                cout<<"yes"<<endl;
           cout<<(i1+1)<<" "<<(j1+1)<<endl;
           }
    }
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: