很多都超时了,怎么改啊,急急急
查看原帖
很多都超时了,怎么改啊,急急急
866969
telankesi楼主2022/11/16 10:01
#include <stdio.h>
int a[100][2];//价格 重要度
int n;//最大价钱
int m;//商品个数
int max = 0;//记录最大总和
void fun(int money, int t, int k, int j);
int main() {

	scanf("%d", &n);

	scanf("%d", &m);

	for (int i = 0; i < m; i++) {
		scanf("%d %d", &a[i][0], &a[i][1]);

	}
	fun(0, 0, 0, 1);
	printf("%d", max);
	return 0;

}

void fun(int money, int t, int k, int j) {
	if (k == m && max < t)
		max = t;

	for (int i = k; i < m; i++) {

		if (money + a[k][0] < n)
			fun(money + a[i][0], t + a[i][0] * a[i][1], i + 1, j + 1);
		else {

			if (t > max)
				max = t;

		}
		fun(money, t, i + 1, j + 1);
	}
}

2022/11/16 10:01
加载中...