关于 C++ 语法
  • 板块灌水区
  • 楼主isitover
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/7/5 14:29
  • 上次更新2023/10/27 21:50:19
查看原帖
关于 C++ 语法
558743
isitover楼主2022/7/5 14:29
#include <stdio.h>
#include <algorithm>
#include <math.h>

int n, m, k, P[40][21];

struct node {
    double p;
    int i;
    inline bool operator<(const node &nd) const {
        return p == nd.p ? i < nd.i : p > nd.p;
    }
} ans[40];

int main() {
	scanf("%d %d", &n, &m);
	for (int i = 0; i < n; ++i)
	    scanf("%d", P[i]), ans[i].i = i + 1;
	for (int i = 0; i < n; ++i)
	    for (int j = 1; j <= m; ++j)
	        scanf("%d", &P[i][j]), P[i][j] = 100 - P[i][j];
	scanf("%d", &k);
	for (int g = 0, j; g < k; ++g) {
	    scanf("%d", &j);
	    for (int i = 0; i < n; ++i)
	        P[i][j] = 100 - P[i][j];
	}
	double tmp = 0;
	for (int i = 0; i < n; ++i) {
	    ans[i].p = *P[i] / 100.0;
	    for (int j = 1; j <= m; ++j)
	        ans[i].p *= P[i][j] / 100.0;
	    tmp += ans[i].p;
	}
	std::sort(ans, ans + n);
	for (int i = 0; i < n; ++i)
	    printf("%d %.2lf\n", ans[i].i, !tmp ? 0.0 : 100 * ans[i].p / tmp);
}

55 行中定义了二维数组 P。

但在第 3030 行(倒数第 99 行)中却用到了 *P[i] 并进行了运算。

实测编译可以通过,求问 dalao 为什么。

2022/7/5 14:29
加载中...