Matrix Swapping II 周日练习的一题。 奇怪了,从下到上算就不对。 #include <iostream> #include <cstring> #include <cmath> #include <cstdlib> #include <algorithm> #include <string> #include <cstdio> #include <climits> #include <queue> #include <map> #include <list> #include <vector> using namespace std; char po[1005][1005]; bool cmp(int a, int b) { return a > b; } int main() { int n, m; while (scanf("%d%d", &n, &m) != EOF) { getchar(); for (int i=0; i < n; i++) { scanf("%s", po[i]); for (int j=0; j < m; j++) po[i][j] -= '0'; } for (int i=1; i < n; i++) for (int j=0; j < m; j++) { if (po[i][j] != 0) po[i][j] += po[i-1][j]; } int sum = 0; for (int i=0; i < n; i++) { sort(po[i], po[i]+m, cmp); for (int j=0; j < m; j++) { int v = po[i][j] * (j+1); if (v > sum) sum = v; } } printf("%d/n", sum); } return 0; }