设备更新问题

int update_dev(int n, int D, int r[][8], int m[][8], int u[][8], bool p[]) {
	int i, t, k;
	int optg, rem;
	int(*f)[7] = new int[8][7];
	bool(*x)[7] = new bool[7][7];
	for (i = 1; i <= n; i++) {
		f[n + 1][i] = 0;
	}
	for (i = n; i >0; i--) {
		for (t = 1; t <= i; t++) {
			if (i > t)
				f[i][t] = r[i][0] - m[i][0] - u[i - t][t] + f[i + 1][1];
			else
				f[i][t] = r[i][0] - m[i][0] - u[0][t - 1 + D] + f[i + 1][1];
			x[i][t] = true;
			if (i > t)
				rem = r[i - t][t] - m[i - t][t] + f[i + 1][t + 1];
			else
				rem = r[0][t-1+D] - m[0][t-1+D] + f[i + 1][t + 1];
			if (f[i][t] < rem) {
				f[i][t] = rem; x[i][t] = false;
			}
		}
	}
	t = 1;
	for (i = 1; i <= n; i++) {
		p[i] = x[i][t];
		if (p[i])
			t = 1;
		else
			t = t + 1;
	}
	optg = f[1][1];
	delete f; delete x;
	return optg;
}

int main() {
	int n = 6;
	int D = 2;
	int optg;
	int r[6][8] = { {14,12,10,8,6},{15,15,14,14,13},{17,17,16,16},{19,19,18},{21,20},{23} };
	int m[6][8] = { {1,2,3,4,5},{1,2,3,4,5},{1,1,2,2,},{1,1,2},{1,1},{1} };
	int u[6][8] = { {24,24,25,25,25},{20,22,24,26,28},{20,22,24,26},{20,22,24},{21,22},{21} };
	bool p[6];
	optg = update_dev(n, D, r, m, u, p);
	printf("%d\n", optg);
	for (int i = 0; i < 6; i++) {
		printf("%d", p[i]);
	}
	return 0;
}

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值