【递归函数错误】求分析
查看原帖
【递归函数错误】求分析
418527
Goplush楼主2021/1/26 19:54

P1208 购买奶的函数,用循环AC了,但是注释里的递归不知道哪里错了,求看! 代码如下


#include<stdio.h> 
#include<stdlib.h>
void sort(int* a, int* b,int n);
int purchase(int* milk,int* pr,int all);
int main (void){
	int all,n,i;
	scanf("%d %d",&all,&n);
	int* milk;
	int* pr;
	milk=(int*)calloc(n+2,sizeof(int));
	pr=(int*)calloc(n+2,sizeof(int));
	for(i=0;i<n;i++){
		scanf("%d%d",pr+i,milk+i);
	}
	sort(milk,pr,n);
	printf("%d",purchase(milk,pr,all));
}
void sort(int* a, int* b,int n){
	int i,j,flag,t;
	for(i=0;i<n;i++){
		flag=0;
		for(j=0;j<n-1-i;j++){
			if(*(b+j)>*(b+j+1)){
				t=*(b+j+1);
				*(b+j+1)=*(b+j);
				*(b+j)=t;
				t=*(a+j+1);
				*(a+j+1)=*(a+j);
				*(a+j)=t;
				flag++;
			} 
			else{
				;
			}
		}
		if(flag==0){
			break;
		}
		else{
			;
		}
	}
}
int purchase(int* milk,int* pr,int all){
	/*if(all<=*milk){
		return((*milk)*all);
	}
	else{
		return((*milk)*(*pr)+purchase(milk+1,pr+1,all-*milk));
	}*/
	int i,sum;
	sum=0;
	for(i=0;*(milk+i)<all;i++){
		sum+=*(milk+i)**(pr+i);
		all-=*(milk+i);
	}
	sum+=*(pr+i)*all;
	return sum;
}

2021/1/26 19:54
加载中...