160A题目网址
题目解析
1.输入硬币的个数,分配硬币,使拿最小的硬币数比剩下的硬币金额大
举例:
输入:
2
3 3
输出
2
2.注意点:
1)接收整型数组时要使用&,因为只有字符数组是使用指针传递首地址的
scanf("%d",&a[i]);
2)使用冒泡排序,将数组从大到小排序
for(int j=0;j<n-1;j++)
for(int k=0;k<n-1-j;k++)
3)使用count_all去计算所有的硬币金额,使用count_now去计算现在拿的硬币金额,再将它与剩下的硬币金额比较
代码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main()
{int n=0,count_all=0,count_now=0,count=0;scanf("%d",&n);int a[100]={0};for(int i=0;i<n;i++){//字符串才可以 char a[i],字符数组才使用了指针scanf("%d",&a[i]);//&count_all+=a[i];}for(int j=0;j<n-1;j++){for(int k=0;k<n-1-j;k++){if(a[k]<a[k+1]){int temp=0;temp=a[k];a[k]=a[k+1];a[k+1]=temp;}}}for(int m=0;m<n;m++){count_now+=a[m];count++;if(count_now>(count_all-count_now)){break;}}printf("%d",count);getchar();system("pause");return 0;
}