zoukankan      html  css  js  c++  java
  • UVaOJ 120

    120 - Stacks of Flapjacks

    题目看了半天......英语啊!!!

    好久没做题...循环输入数字都搞了半天...罪过啊!!!

    还是C方便一点...其实C++应该更方便的...C++得再看看!!!

    #include <iostream>
    #include <cstdio>
    
    using namespace std;
    
    /*翻转*/
    void myReverse(int arr[],int s,int e)    
    {
        while (s<e)
        {
            int temp=arr[s];
            arr[s]=arr[e];
            arr[e]=temp;
            s++;
            e--;
        }
    }
    
    int main(void)
    {
        int temp;
        while (scanf("%d",&temp)!=EOF)
        {
            int myArr[30];
            myArr[0]=temp;
            int myCount=1;
    
            while (getchar()!='
    ')
            {
                cin>>myArr[myCount++];
            }
    
            /*输出原始的*/
            for (int i=0;i<myCount-1;i++)
            {
                cout<<myArr[i]<<" ";
            }
            cout<<myArr[myCount-1]<<endl;
    
            for (int i=myCount-1;i>=0;i--)   //针对此次最大的数
            {
                /*先找到此次最大数的位置*/
                int thisMaxIndex=i;    //注意记录的是下标
                for (int j=i-1;j>=0;j--)
                {
                    if (myArr[j]>myArr[thisMaxIndex])
                    {
                        thisMaxIndex=j;
                    }
                }
    
                if(thisMaxIndex==i)   //此次的最后一个已经是最大的了,不要操作
                {
                    continue;
                }
                else if(thisMaxIndex==0)   //最大的第一个数,
                { 
                    cout<<(myCount-i)<<" ";   //直接从后面翻一下,注意输出
                    myReverse(myArr,0,i);
                }
                else
                {
                    cout<<(myCount-thisMaxIndex)<<" ";
                    myReverse(myArr,0,thisMaxIndex);
                    i++;   //再继续此次循环
                }
            }
    
            cout<<"0
    ";   //最后输出0;
        }
        return 0;
    }

    总结:

    1.while (scanf("%d",&temp)!=EOF)的循环输入判读

    2.while (getchar()!=' ')  {  cin>>myArr[myCount++];} 看输入,读了一个数字之后紧接着要么是一个空格,要么是结尾的换行符,这里这代码漂亮!空格读了就不要了然后直接读数字,是换行就退出了循环,紧密结合了实际!

    3.每次循环的处理,最外层是由后向前,保证处理过的都是有序的大的数.每次循环,要是不合要求再 i-- ,即再来这次循环!

  • 相关阅读:
    正则表达式运用到json断言与响应断言
    接口测试基础
    Jmeter接口测试流程
    性能测试基本概念
    数据库简介以及增删改查
    接口测试流程
    svn安装手册
    postman基本操作
    MySql数据库知识总结
    Liunx测试环境搭建详解
  • 原文地址:https://www.cnblogs.com/jiayith/p/3499108.html
Copyright © 2011-2022 走看看