描述
中国版的巴比伦塔是由若干个圆盘堆叠而成的。当然,放在下面的圆盘的半径不能小于放在上面的圆盘半径。
然而塔的基座能承受的重量是有限制的,重量超过限度会有塌陷的危险。
给出塔的基座能承受的最大重量w,以及n个圆盘的重量vi和半径ri,要你计算这塔最多能造多高,假设每个圆盘的高度都是1
-
输入
-
多组测试数据,对于每组数据
第一行两个整数,w和n,
接下来有n行,每行两个整数,表示vi和ri数据范围:
0<=w<=1000
1<=n<=100
0<=vi<=100
1<=ri<=100
输出
-
输出塔的最大高度,每组数据占一行
样例输入
-
10 3
8 1
3 2
6 3
10 3
8 1
3 3
6 3
样例输出
-
2
2
贪心,模拟题
#include <stdio.h> int main() { int weight,number,t; int i,j; int temp1,temp2; int v[101],r[101]; int count; int sum; while(scanf("%d %d",&weight,&number)!=EOF) { count=0; sum=0; for (t=0;t<number;t++) { scanf("%d %d",&v[t],&r[t]); } for(i=0;i<number;i++) for(j=i+1;j<number;j++) { if (v[i]>v[j]) { temp1=v[j]; v[j]=v[i]; v[i]=temp1; temp2=r[j]; r[j]=r[i]; r[i]=temp2; } } for(i=0;i<number;i++) { if(sum+v[i]<=weight) { count++; sum+=v[i]; } } printf("%d\n",count); } return 0; }