30分求助啊啊
查看原帖
30分求助啊啊
985268
Kimzzzzzz楼主2023/5/21 14:16
#include<bits/stdc++.h> 
 
int main(){
	int n,m,z;
	unsigned int q;
	int H[50][2]={{0},{0}};
	scanf("%d %d",&n,&m);
	//输入总价格和物品数量 n价格m数量 
	
	for(int i=0;i<m;i++){
		scanf("%d %d",&H[i][1],&z);
		H[i][0]=H[i][1]*z;
	}
	//做收获和价格的表格,0列收获,1列价格 
	
	for(int i=0;i<m-1;i++){
		for(int j=0;j<m-i-1;j++){
			int temp=0;
			int temp1=0;
			if(H[j][0]<H[j+1][0]){
				temp=H[j][0];
				H[j][0]=H[j+1][0];
				H[j+1][0]=temp;
				
				temp1=H[j][1];
				H[j][1]=H[j+1][1];
				H[j+1][1]=temp1;
			}
		}
	}
	//从大到小排序收获
	
	int b=0; 
	int con=0;
	int tou=0;
	for(int i=0;i<m-1;i++){
		if(H[i][0]==H[i+1][0]){
			if(b==0){
			tou=i;
			b=1;
			}
			con++;
		}
		if((H[i][0]!=H[i+1][0]&&b==1)||con==m-1){	
			for(int i=con;i>0;i--){
				for(int j=0;j<i;j++){
					if(H[j+tou][1]>H[j+tou+1][1]){
						int temp=H[j+tou][1];
						H[j+tou][1]=H[j+tou+1][1];
						H[j+tou+1][1]=temp;
						
						int temp0=H[j+tou][0];
						H[j+tou][0]=H[j+tou+1][0];
						H[j+tou+1][0]=temp0;
						
					}	
				}	
			}
		 b=0; 
		 con=0;
		 tou=0;
		}	 
	}
	//将收获一样的部分 价格排序 
		
	int q1=0;
	for(int i=0;i<m;i++){
		if(q1+H[i][1]>n){continue;}
		q += H[i][0];
		q1 += H[i][1];
	}
	//放入背包并判断 

	printf("%d",q);
	
	return 0;
}
2023/5/21 14:16
加载中...