不知道哪错了,只过了三个,急急急
查看原帖
不知道哪错了,只过了三个,急急急
866969
telankesi楼主2022/11/21 13:05
#include <stdio.h>
int main() {
	int w;
	scanf("%d", &w);
	int n;
	scanf("%d", &n);
	int min = 0;
	int a[30005]={0};
	int flag[30005] = { 0 };//标记是否被选过
	int num=0;//组数
	for (int i = 0; i < n; i++) {
		scanf("%d", &a[i]);
	}
	for (int i = 0; i < n - 1; i++) {
		for (int j = i + 1; j < n; j++) {
			if (a[j] > a[i]) {
				int t = a[i];
				a[i] = a[j];
				a[j] = t;
			}
		}
	}
	
	for (int i = 0; i < n; i++) {
		if (flag[i] == 1)continue;
		for (int j = i + 1; j < n; j++) {
			if (flag[i] == 1) {
				if (j == n - 1) { num++; flag[i] = 1; } continue;
			}
			if (a[j] + a[i] <= w) {
				flag[i] = 1;
				flag[j] = 1;
				num++;
				break;
			}
			else if (j == n - 1) num++;
		}
	}
	printf("%d", num);
	return 0;
}
2022/11/21 13:05
加载中...