有没有佬来品鉴一下这两种写法的不同
查看原帖
有没有佬来品鉴一下这两种写法的不同
758820
Porridge_Dust楼主2024/8/8 15:41

如果我对于 m>nm > n 的情况将列按最大值排序,再将前n列复制到新数组中,m<=nm <= 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了

这是啥原因啊我太菜看不出来

2024/8/8 15:41
加载中...