如果我对于 m>n 的情况将列按最大值排序,再将前n列复制到新数组中,m<=n 直接复制到新数组中,like this:
for (int i = 1; i <= m; i ++ ) w[i].second = i;
for (int i = 1; i <= n; i ++ )
for (int j = 1; j <= m; j ++ )
cin >> a[i][j], w[j].first = max(w[j].first, a[i][j]);
sort (w + 1, w + m + 1, cmp);
if (m > n) {
m = n;
for (int i = 1; i <= n; i ++ )
for (int j = 1; j <= n; j ++ )
na[j][i] = a[j][w[i].second];
}
else {
for (int i = 1; i <= n; i ++ ) for (int j = 1; j <= m; j ++ ) na[i][j] = a[i][j];
}
那么它就会 WA#8
如果我都将列按最大值排序,再将前n列复制到新数组中(多出来也没事因为全是0),like this:
cin >> n >> m;
for (int i = 1; i <= m; i ++ ) w[i].second = i;
for (int i = 1; i <= n; i ++ )
for (int j = 1; j <= m; j ++ )
cin >> a[i][j], w[j].first = max(w[j].first, a[i][j]);
sort (w + 1, w + m + 1, cmp);
m = n;
for (int i = 1; i <= n; i ++ )
for (int j = 1; j <= n; j ++ )
na[j][i] = a[j][w[i].second];
那么就AC了
这是啥原因啊我太菜看不出来