代码1:
int getMinCount(int coins[],int length){
int res=0;
for(int i=0;i<length;i++){
res+=(coins[i]+1)/2;
}
return res;
}
代码2:
int getMinCount1(int coins[],int length){
int res=0;
for(int i=0;i<length;i++){
if(coins[i]%2!=0)
res+=coins[i]/2+1;
if(coins[i]%2==0)
res+=coins[i]/2;
}
return res;
}
测试:
#include<stdio.h>
#include <stdlib.h>
#include<math.h> //数学函数,求平方根、三角函数、对数函数、指数函数...
#define MAXSIZE 100
//用于使用c++的输出语句
#include<iostream>
using namespace std;
int getMinCount1(int coins[],int length);
int getMinCount(int coins[],int length);
void main(){
int a[]={4,2,1};
for(int i=0;i<3;i++){
cout<<a[i]<<"\t";
}
cout<<endl;
cout<<getMinCount(a,3)<<endl;
int b[]={2,3,10};
for(int j=0;j<3;j++){
cout<<b[j]<<"\t";
}
cout<<endl;
cout<<getMinCount(b,3)<<endl;
}
int getMinCount1(int coins[],int length){
int res=0;
for(int i=0;i<length;i++){
if(coins[i]%2!=0)
res+=coins[i]/2+1;
if(coins[i]%2==0)
res+=coins[i]/2;
}
return res;
}
int getMinCount(int coins[],int length){
int res=0;
for(int i=0;i<length;i++){
res+=(coins[i]+1)/2;
}
return res;
}
本文探讨了一个数学问题:如何在桌面上的n堆硬币中,通过每次从任一堆取一枚或两枚硬币的方式,以最少的次数拿完所有硬币。通过代码实现和测试来寻找解决方案。

672

被折叠的 条评论
为什么被折叠?



