uva - 120 - Stacks of Flapjacks
2014-02-02 22:21
387 查看
//#define Local #include <iostream> #include <cstring> #include <stdio.h> #include <stdlib.h> using namespace std; #define MAX 1000 struct Array { int num[MAX]; int len; }; void Change (Array *flap, Array *sorted, char s[]) { int j = 0, k = 0; char temp[MAX]; for (int i = 0; i <= strlen(s); i++) //这地方用了 <= 要注意,因为要取到‘\0’ { if (s[i] == ' ' || s[i] == '\0')//等于空格,转化前边储存的temp。字符串最后是\0,写成了\n,所以最后一个数转换不了 { (*flap).num[k] = atoi(temp); (*sorted).num[k] = atoi(temp); k++; memset(temp, '\0', sizeof(temp)); j = 0; } else temp[j++] = s[i]; } (*flap).len = (*sorted).len = k; //长度写错过,改了以后是等于k,不是j } int Search (Array flap, int a) { for (int i = 0; i < flap.len; i++) if (flap.num[i] == a) return i; return 0; } int cmp(const void *a, const void *b) { return *(int*)a - *(int*)b; } void swap (int *a, int *b) { int temp = 0; temp = *a; *a = *b; *b = temp; } void fips (Array *flap, int pos) { int head = 0; for (int i = pos; i >= pos - pos/2; i--) swap(&(*flap).num[i], &(*flap).num[head++]); } int main() { #ifdef Local freopen("a.in", "r", stdin); freopen("a.out", "w", stdout); #endif Array flap = {0, 0}, sorted = {0, 0}; int i = 0, pos = 0; char s[MAX]; while (gets(s) != NULL) { puts(s); Change(&flap, &sorted, s); //转换输入 qsort(sorted.num, sorted.len, sizeof(int), cmp);//快速排序, qsort应该写sorted.len,写了个len for (i = sorted.len-1; i >= 0; i--) { if (flap.num[i] != sorted.num[i]) //不在应该在的位置上,要进行翻转 { pos = Search(flap, sorted.num[i]);//在flap中查找sorted[i]的位置 if (pos != 0) //不在顶上,在顶上上的话不用翻到顶上了 { fips(&flap, pos);//把要找的元素翻到最顶上 cout << sorted.len-pos << ' '; } fips(&flap, i);//在把它翻到应该的位置上。 cout << sorted.len-i << ' '; } } cout << '0' << endl; } }
相关文章推荐
- UVa 120 - Stacks of Flapjacks
- UVa_120 - Stacks of Flapjacks
- UVa Problem 120 Stacks of Flapjacks (煎饼堆)
- uva 120 stacks of flapjacks ——yhx
- uva 120 Stacks of Flapjacks
- Uva120 Stacks of Flapjacks 翻煎饼
- UVa120 - Stacks of Flapjacks
- UVa 120 - Stacks of Flapjacks
- Uva120 Stacks of Flapjacks 翻煎饼
- UVA 120 Stacks of Flapjacks
- Uva 120 Stacks of Flapjacks
- uva 120 - Stacks of Flapjacks (RE)
- UVa120 Stacks of Flap jacks
- UVA 120 - Stacks of Flapjacks
- 解题报告 之 UVA120 Stacks of Flapjacks
- UVA - 120 Stacks of Flapjacks
- UVA 120 Stacks of Flapjacks (STL deque&reverse)
- UVA 120 - Stacks of Flapjacks
- 【例题 8-1 UVA 120 】Stacks of Flapjacks
- UVA-120- Stacks of Flapjacks