UVa Problem 120 Stacks of Flapjacks (煎饼堆)
2011-05-22 23:57
316 查看
// Stacks of Flapjacks (煎饼堆) // PC/UVa IDs: 110402/120, Popularity: B, Success rate: high Level: 2 // Verdict: Accepted // Submission Date: 2011-05-22 // UVa Run Time: 0.028s // // 版权所有(C)2011,邱秋。metaphysis # yeah dot net // // 先将数据排序,然后根据排序后的结果将原来的序列进行相应操作变成最终的序列。在排序时,由于可能有 // 两个饼具有相同的直径,故需要记录数据的序号,恢复的方法是找到当前尚未排序的X,先将其翻转到顶端, // 然后再翻转到其在最终排序后的位置。 #include <iostream> #include <sstream> #include <algorithm> using namespace std; #define MAXSIZE 30 struct pancake { int diameter; int index; }; pancake pancakes[MAXSIZE]; pancake original[MAXSIZE]; bool cmp(pancake x, pancake y) { return x.diameter < y.diameter; } void flip(int pos, int size) { pancake tmp; int i = 0, j = size - pos; for (; i < j; i++, j--) if (original[i].diameter != original[j].diameter) { tmp = original[i]; original[i] = original[j]; original[j] = tmp; } } int main(int ac, char *av[]) { string line; while (getline(cin, line)) { // 回显。 cout << line << endl; // 读入数据。 int capacity = 0; istringstream iss(line); while (iss >> pancakes[capacity].diameter) { pancakes[capacity].index = capacity; original[capacity] = pancakes[capacity]; capacity++; } // 排序。 sort(pancakes, pancakes + capacity, cmp); // 执行翻转操作,若第 i 大元素未在第i位上,则先找到其序号,然后 // 先将其翻转到顶端,然后再翻转到位置i。 for (int i = capacity - 1; i >= 0; i--) { // 在当前序列中找到该元素。 // 假如数原来的序号与当前的序号不等,需要翻转操作。 int marker; for (int j = 0; j < capacity; j++) if (original[j].index == pancakes[i].index) { marker = j; break; } if (marker != i) { if (marker != 0) { cout << (capacity - marker) << " "; flip(capacity - marker, capacity); } cout << (capacity - i) << " "; flip(capacity - i, capacity); } } cout << "0" << endl; } return 0; }
相关文章推荐
- UVa Problem Solution: 120 - Stacks of Flapjacks
- Stacks of Flapjacks 翻煎饼-UVA120 白书第五章
- Uva120 Stacks of Flapjacks 翻煎饼
- Uva120 Stacks of Flapjacks 翻煎饼
- UVA 120 Stacks of Flapjacks 煎饼
- UVa 120 Stacks of Flapjacks 摞煎饼 - 插入排序
- UVa 120 Stacks of Flapjacks
- UVA 120 - 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
- UVA - 120 - Stacks of Flapjacks
- [UVA120]Stacks of Flapjacks[STL][构造]
- UVA 120 Stacks of Flapjacks
- 煎饼排序 (Stacks of Flapjacks, Uva 120)
- UVA 120 Stacks of Flapjacks
- UVa_120 - Stacks of Flapjacks
- Uva120——Stacks of Flapjacks