此题我是第一次见,没什么思路,看了人家的结题报告后做的,希望我会记住这类题,
这虽然算不上什么算法,但是也是一种思路。希望我以后还会碰到这样的题;
第二处卡住我的地方是读入数组的时候
不知道怎么处理EOF
看了人家的方法
我又多了种方法,
这虽然算不上什么算法,但是也是一种思路。希望我以后还会碰到这样的题;
第二处卡住我的地方是读入数组的时候
不知道怎么处理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;
}