描述:從Vladivostok站Moscow站共有n個站台,Vladivostok記為1,Moscow記為n,火車來回往返。現在給出從車站i到車站j和j到i的買票人數,計算需要的最少節車廂。 思路:水題,模擬即可。注意先下後上,用一個max保持最大的人數。 代碼:
//g++ 4.7.2 用到了變長數組 #include <cstdio> int main() { int n; scanf("%d", &n); int a[n+1][n+1]; for (int i = 1; i <= n; ++i) for (int j = 1; j <= n; ++j) scanf("%d", &a[i][j]); int max = 0, sum = 0; for (int i = 1; i <= n; ++i) { for (int t = 1; t < i; ++t) sum -= a[t][i]; for (int j = i + 1; j <= n; ++j) { sum += a[i][j]; if (sum > max) max = sum; } } sum = 0; for (int i = n; i >= 1; --i) { for (int t = n; t > i; --t) sum -= a[t][i]; for (int j = i - 1; j >= 1; --j) { sum += a[i][j]; if (sum > max) max = sum; } } printf("%d\n", max % 36 == 0 ? max / 36 : max / 36 + 1); return 0; }