• uva 120 C


    题意:给一个n长度的子序列,每次可以把从下往上数,第几个及上面的都反转过来,最后序列变为上升子序列

    分析:可以每次把当前最大的放到下面,这样以后无论如何翻动都不会干扰到他,直到得到答案

    题目没有要求最优解,这样肯定能得到结果,借助函数reverse反转数组效果不错,没难度,见代码

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int maxn=35;
     4 
     5 struct point{
     6    int id,x;
     7 }p[maxn];
     8 
     9 bool cmp(point a,point b){
    10    return a.x<b.x;
    11 }
    12 
    13 int num[maxn];
    14 
    15 int main(){
    16    int n,d;
    17    string line;
    18    while(getline(cin,line)){
    19       stringstream ccin(line);
    20       n=0;
    21       while(ccin>>d){
    22          p[n].x=d;
    23          p[n].id=n+1;
    24          n++;
    25       }
    26       for(int i=0;i<n-1;i++)
    27          cout<<p[i].x<<" ";
    28       cout<<p[n-1].x<<endl;
    29       sort(p,p+n,cmp);
    30       for(int i=0;i<n;i++)
    31          num[p[i].id-1]=i+1;
    32       int ans=n;
    33       while(n>1){
    34          int i;
    35          for(i=n-1;i>=0;i--)
    36             if(num[i]==n)
    37                break;
    38          if(i==0){
    39             reverse(num,num+n);
    40             n--;
    41             cout<<ans-n<<" ";
    42          }
    43          else if(i==n-1)
    44             n--;
    45          else{
    46             cout<<ans-i<<" ";
    47             reverse(num,num+i+1);
    48             reverse(num,num+n);
    49             n--;
    50             cout<<ans-n<<" ";
    51          }
    52 
    53       }
    54       cout<<0<<endl;
    55    }
    56    return 0;
    57 }
    View Code
  • 相关阅读:
    第八章:模型视图
    第二章:初识Qt
    第三章:正式开始
    第七章:QtQuick控件
    第十章:形状
    第六章:Fluid元素
    第一章:前言
    第九章:画布
    weblogic基于https访问其他servers时无法访问
    ssh远程连接网络构建 wang
  • 原文地址:https://www.cnblogs.com/jihe/p/4992780.html
Copyright © 2020-2023  润新知