UVA120Stacks of Flapjacks

纠结了好几个小时 不明白哪错了 跟别人的代码仔仔细细的对照才发现题目要求把原来的数据再输出一遍 石化。。

选择排序的思想 每次找到最大的那个数将它放在该放的位置

输入用字符串 再转化成数字

UVA就是麻烦 来来回回的逆转 都转晕了

View Code
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include<string.h>
 4 int n ;
 5 void deal(char *s,int *a)
 6 {
 7     int begin,end,len=strlen(s);
 8     n=0;
 9     begin=0;
10     end=begin;
11     while(end<len)
12     {
13        while(s[end]!=' '&&s[end]!=0)
14        end++;
15        int t=0;
16        while(begin<end)
17        {
18           t*=10;
19           t+=s[begin]-'0';
20           begin++;
21        }
22        n++;a[n]=t;
23        begin=end+1;
24        end=begin;
25     }
26 }
27 int main()
28 {
29     int i, j, p[65],x[65],r[165],g, t, k, m,a[65];
30     char c[60];
31     while(gets(c)!=NULL)
32     {
33         deal(c,p);
34         for(i = 1 ; i <= n ; i++)
35         {
36             if(i!=1)
37             printf(" ");
38             printf("%d", p[i]);
39         }
40         puts("");
41         for(i = 1;i <= n;i++)
42         {
43             x[n-i+1]=p[i];
44         }
45         g = 0;
46         for(i = 1 ; i < n ; i++)
47         {
48             int max = 0;
49             for(j = i ; j <= n ; j++)
50             if(max<x[j])
51             {
52                 max = x[j];
53                 k = j;
54             }
55             if(k!=i)
56             {
57                 if(k!=n)
58                 {
59                    r[g++] = k;
60                    int begin=k,end=n;
61                   while(begin<=end)
62                   {
63                    t=x[begin];
64                    x[begin]=x[end];
65                    x[end]=t;
66                    begin++;
67                    end--;
68                   }
69                 }
70                 r[g++] = i;
71                int begin=i,end=n;
72                 while(begin<=end)
73                 {
74                    t=x[begin];
75                    x[begin]=x[end];
76                    x[end]=t;
77                    begin++;
78                    end--;
79                 }
80             }
81         }
82         for(i = 0 ; i < g ; i++)
83         printf("%d ", r[i]);
84         printf("0\n");
85     }
86     return 0;
87 }
原文地址:https://www.cnblogs.com/shangyu/p/2581567.html