UVA120-煎饼摊

来源:互联网 发布:电脑椅子 家用知乎 编辑:程序博客网 时间:2024/04/27 17:28
此题我是第一次见,没什么思路,看了人家的结题报告后做的,希望我会记住这类题,
这虽然算不上什么算法,但是也是一种思路。希望我以后还会碰到这样的题;
第二处卡住我的地方是读入数组的时候
不知道怎么处理EOF
看了人家的方法
我又多了种方法,

cin也可以的,有cin把关,EOF也进不去while循环的、


#include <iostream>#include <fstream>#include <cstdlib>using namespace std;int a[30], b[30];int com(const void *a,const void *b){    return *(int*)a - *(int*)b;}int fls(int len){    int temp;    for(int i = 0; i <= len/2; i++)    {        temp = a[i];        a[i] = a[len-i];        a[len-i] = temp;    }    return 0;}int main (){    // freopen("data.in","r",stdin);    // freopen("data.out","w",stdout);    int i = 0;    while(cin>>a[i])    {        b[i] = a[i];        if(cin.get()!='\n')            i++;        else        {            i+=1;            qsort(b,i,sizeof(b[0]),com);            for(int j = 0; j < i; j ++)                cout<<a[j]<<" ";            cout<<endl;            for(int j = i-1; j >= 0; j--)            {                if(b[j] != a[j])                {                    for(int k = 0; k < i; k++)                    {                        if(b[j] == a[k])                        {                            if(k)                            {                                cout<<i-k<<" ";                                fls(k);                            }                        }                    }                    cout<<i-j<<" ";                    fls(j);                    j = i;                }                if(!j)cout<<0<<endl;            }i = 0;        }    }    return 0;}