zoukankan      html  css  js  c++  java
  • 翻转数组

    翻转数组

    									题目描述

    给定一个长度为n的整数数组a,元素均不相同,问数组是否存在这样一个片段,只将该片段翻转就可以使整个数组升序排列。其中数组片段[l,r]表示序列a[l], a[l+1], ..., a[r]。原始数组为

    a[1], a[2], ..., a[l-2], a[l-1], a[l], a[l+1], ..., a[r-1], a[r], a[r+1], a[r+2], ..., a[n-1], a[n],

    将片段[l,r]反序后的数组是

    a[1], a[2], ..., a[l-2], a[l-1], a[r], a[r-1], ..., a[l+1], a[l], a[r+1], a[r+2], ..., a[n-1], a[n]。

    这道题比较简单。

    代码如下:

    #include<iostream>
    #include <vector>
    using namespace std;
    int main(){
        int n;
        while(cin>>n){
            vector<int> in(n);
            for(int i=0;i<n;i++)
                cin>>in[i];
            int k=0, m=0;
            bool flag1=true, flag2=true;
            for(int i=0;i<n-1;i++){
                if(in[i]<in[i+1]&&flag1){
                    continue;
                }
                else {
                    if(flag1) {k=i;  flag1=false;}
                    if(in[i]>in[i+1])
                        continue;
                    else{
                        m=i;
                        break;
                    }
                }
            }
            if(k==m||in[k]>in[m+1]){
                cout<<"no"<<endl;
                continue;
            }
            int i=m;
            for(;i<n-1;i++){
                if(in[i]>in[i+1]){
                    cout<<"no"<<endl;
                    break;
                }
            }
            if(i>=n-1)
                cout<<"yes"<<endl;
        }
        return 0;
    }
  • 相关阅读:
    HDU-统计难题
    POJ-A Simple Problem with Integers
    HDU-I Hate It
    个人站立会议06
    个人站立会议05
    个人站立会议04
    易校小程序典型用户需求分析
    个人站立会议03
    个人第二次晚间站立总结会议
    个人站立会议02
  • 原文地址:https://www.cnblogs.com/lqwh/p/7524255.html
Copyright © 2011-2022 走看看