UVA 11111 - Generalized Matrioshkas
2017-09-03 17:56
162 查看
题目大意:-a~a(-a到离-a最近的一个a)代表一个大小为a的俄罗斯套娃(内部可以容纳小于a大小的套娃),判断输入的套娃想法是否能够实现。
解题思路:针对每个套娃都判断一次,其内部是否能够实现。写一个函数判断实现:其内部套娃都存在(内部-a,+a数量相同,内部全由-a,+a组成)。
ac代码:
解题思路:针对每个套娃都判断一次,其内部是否能够实现。写一个函数判断实现:其内部套娃都存在(内部-a,+a数量相同,内部全由-a,+a组成)。
ac代码:
#include <iostream> #include <set> using namespace std; int a[5005]; set <int> s; bool pair_(int m, int n) { s.clear(); if ( (n-m) % 2 ) return 0; for (int i=m; i<n; i++) if (a[i]<0) s.insert(-a[i]); else if (s.count(a[i])) s.erase(a[i]); if (s.size()) return 0; return 1; } bool toy(int m, int n) { int sum=0, temp; temp = pair_(m+1, n); if (!temp) return 0; for (int i=m+1; i<n; i++) if (a[i]<0) for (int j=i+1; j<n; j++) if (-a[i] == a[j]){ i = j, sum += a[j]; break; } if (sum >= a ) return 0; return 1; } int main() { int n, judge; while (scanf("%d", &a[0])!=EOF){ n = judge = 1; while (getchar() != '\n') scanf("%d", &a[n++]); judge = pair_(0, n); if (judge) for (int i=0; i<n; i++){ for (int j=i+1; j<n; j++) if (-a[i] == a[j] && a[i] < 0){ judge = toy(i, j); break; } if (!judge) break; } if (judge) printf(":-) Matrioshka!\n"); else printf(":-( Try again.\n"); } return 0; }
相关文章推荐
- uva 11111
- UVA 11111-Generalized Matrioshkas(栈)
- UVA - 11111 Generalized Matrioshkas
- UVA 11111 - Generalized Matrioshkas
- UVa 11111 Generalized Matrioshkas
- UVa 11111 - Generalized Matrioshkas
- uva 11111 Generalized Matrioshkas(栈)
- UVA 11111 Generalized Matrioshkas
- uva 11111 - Generalized Matrioshkas
- uva 11111 - Generalized Matrioshkas
- uva-11111 Generalized Matrioshkas
- uva 11111 - Generalized Matrioshkas
- Uva 11111 - Generalized Matrioshkas
- uva 11111
- UVA 11111 - Generalized Matrioshkas
- UVA 11111 (暑期-线性表-G- Generalized Matrioshkas)
- Generalized Matrioshkas UVA 11111
- 数据结构 uva-11111-Generalized Matrioshkas
- UVA - 11111 Generalized Matrioshkas
- UVA - 11111 Generalized Matrioshkas