【codevs1098 均分纸牌】贪心
2016-11-11 17:44
465 查看
#include <cstdio> #include <algorithm> using namespace std; int a[105]; int main() { int n, sum(0), ans(0); scanf("%d", &n); for (int i = 1; i <= n; i++) { scanf("%d", &a[i]); sum += a[i]; } sum /= n; for (int i = 1; i <= n; i++) { a[i] -= sum; } int i = 1, j = n; while (a[i] == 0 && i < j) i++; while (i < j) { a[i + 1] += a[i]; a[i] = 0; ans++; i++; while(a[i] == 0 && i < j) i++; } printf("%d\n", ans); return 0; }
没读题系列。。。。。一开始没看见它只能移到相邻的上,然后写了个排序之后最大的和最小的互补然后递推的程序。。。。段错误。。。。
#include <cstdio> #include <cstring> #include <algorithm> #include <iostream> using namespace std; int a[105], ans(0); bool flag = false; void fen(int n, int pre, int t) { while (n > 0) { sort(a, a + n); for (int i = n; i >= n / 2 + 1; i--) { if (a[i] != a[n - i + 1]) { a[i] -= (a[i] - pre); a[n - i + 1] += (a[i] - pre); ans++; } } for (int i = 1; i <= n; i++) { if (a[i] == pre) { a[i] = -1; n--; } } fen(n, pre, t+1); } } int main() { int n, sum(0); scanf("%d", &n); for (int i = 1; i <= n; i++) { scanf("%d", &a[i]); sum += a[i]; } double pre = sum / n; fen(n, pre, 1); printf("%d\n", ans); return 0; }
我把代码贴这。。。。求帮debug。。。。。
相关文章推荐
- codevs1098 均分纸牌(贪心)
- codevs1098 均分纸牌(贪心)
- CODEVS 1098 均分纸牌(贪心)
- 【贪心】【codevs】1098 均分纸牌
- codevs 1098 && 洛谷 P1031 均分纸牌 (修bug plus(两个注意*))
- code[vs] 1098 均分纸牌
- CODE[VS] 1098 均分纸牌
- CodeVs_1098 均分纸牌问题
- CODE[VS] 1098 均分纸牌
- codevs 1098 均分纸牌
- 【codevs黄金】1098 均分纸牌 2002年NOIP全国联赛提高组
- codevs 均分纸牌 1098
- [codevs] 1098 均分纸牌
- CODE[VS] 1098 均分纸牌 ( 2002年NOIP全国联赛提高组)
- codevs1098 均分纸牌
- codeVS 1098 均分纸牌(2002年NOIP全国联赛提高组)
- codevs1098 均分纸牌
- codevs 1098 均分纸牌 模拟 解题报告
- CodeVs 1098 均分纸牌
- CODE[VS] 1098 均分纸牌