AOJ 0033 Ball 题解 《挑战程序设计竞赛》
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AOJ 0033 Ball 题解 《挑战程序设计竞赛》相关的知识,希望对你有一定的参考价值。
题目:Aizu - 0033
思路:二进制枚举,用了昨天学到的2^N以及与运算方法枚举。
1 #include <iostream> 2 #include <vector> 3 #include <algorithm> 4 5 using namespace std; 6 7 int n; 8 int ball[10]; 9 vector<int> l; 10 vector<int> r; 11 12 bool solve() { 13 bool res = false; 14 for (int i = 0; i < 1024; i++) { 15 for (int j = 0; j < 10; j++) { 16 if (i & (1 << j)) { 17 l.push_back(ball[j]); 18 } 19 else { 20 r.push_back(ball[j]); 21 } 22 } 23 int lLen = l.size(); 24 int rLen = r.size(); 25 bool lOK = true; 26 bool rOK = true; 27 for (int j = 0; j < lLen - 1; j++) { 28 if (l.at(j) > l.at(j + 1)) { 29 lOK = false; 30 break; 31 } 32 } 33 for (int j = 0; j < rLen - 1; j++) { 34 if (r.at(j) > r.at(j + 1)) { 35 rOK = false; 36 break; 37 } 38 } 39 if (lOK && rOK) { 40 res = true; 41 break; 42 } 43 l.clear(); 44 r.clear(); 45 } 46 return res; 47 } 48 49 int main() { 50 cin >> n; 51 for (int i = 0; i < n; i++) { 52 for (int j = 0; j < 10; j++) { 53 cin >> ball[j]; 54 } 55 if (solve()) { 56 cout << "YES" << endl; 57 } 58 else { 59 cout << "NO" << endl; 60 } 61 } 62 return 0; 63 }
以上是关于AOJ 0033 Ball 题解 《挑战程序设计竞赛》的主要内容,如果未能解决你的问题,请参考以下文章
POJ 1979 POJ 3009 AOJ 0033 AOJ 0118 [搜索类题目][0033贪心模拟]
《挑战程序设计竞赛》课后练习题解集——2.5 它们其实都是“图”