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;
}