题目描述
有位农夫喜欢把菜种成一排,并且两棵菜之间相距一米。现在农夫种了300米长的菜,但是不幸的是经常被偷。这小偷也有一个奇怪的习惯,总是一次偷一段距离的菜,并且老是忘记已经偷过的地方。
输入
第一行:小偷偷菜的段数N 接下来N行小偷每次偷菜的始末点,范围[0, 300]。
输出
小偷总共偷到的菜的棵数。
样例输入
4 0 4 6 45 3 9 70 100样例输出
77#include<stdio.h> int main() { int n; scanf("%d", &n); int i,j; int a[300], b[300]; for (i = 0; i < n; i++) { scanf("%d%d", &a[i], &b[i]); } int count = 0; for (i = 0; i < n - 1; i ++ ) { for (j = 0; j < n - 1 - i; j++) { if (a[j] > a[j + 1]) { int tmp = a[j]; a[j] = a[j + 1]; a[j + 1] = tmp; } } } for (i = 0; i < n - 1; i++) { for (j = 0; j < n - 1 - i; j++) { if (b[j] > b[j + 1]) { int smp = b[j]; b[j] = b[j + 1]; b[j + 1] = smp; } } } i = 1, j = 1; while (i <= n) { if (i == n) { if (j == 1) { count += b[n - 1] - a[n - 1] + 1; } else { count += b[n - 1] - a[n - j] + 1; } } else if(a[i]>b[i-1]) { count += b[i - 1] - a[i - j] + 1; j = 0; } i++; j++; } printf("%d\n", count); return 0; }
SWUST OJ312: 偷菜
最新推荐文章于 2022-05-10 17:36:20 发布