69,373
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
static int money[] = { 100, 50, 20, 10, 1 };
static int stack[110];
static int index = 0;
static void dfs(int sum, int max)
{
int i;
if (sum > 100)
return;
else if (sum == 100)
{
for (i = 0; i < index; i++)
printf("%d ", stack[i]);
putchar('\n');
return;
}
for (i = 0; i < 5; i++)
if (money[i] <= max)
{
stack[index++] = money[i];
dfs(sum + money[i], money[i]);
index--;
}
}
int main()
{
dfs(0, 100);
return 0;
}
/*
* 100元的具体划分方案,可选面值有1元、10元、20元、50元、100元
*/
#include <stdio.h>
#define MONEY 100
int money[]={1,10,20,50,100};
int check_money(int num[],int n)
{
int i;
int sum=0;
for(i=0;i<n;i++)
{
sum=sum+num[i]*money[i];
}
if(sum<100)return 1;
if(sum==100)return 2;
return 0;
}
void putmoney(int num[])
{
int i;
printf("100=");
for(i=0;i<5;i++)
{
if(num[i])printf("%d*%d+",money[i],num[i]);
}
printf("\b \n");
}
int main()
{
int num[5];
for(num[0]=100;num[0]>=0;num[0]--)
if(check_money(num,1))
for(num[1]=10;num[1]>=0;num[1]--)
if(check_money(num,2))
for(num[2]=5;num[2]>=0;num[2]--)
if(check_money(num,3))
for(num[3]=2;num[3]>=0;num[3]--)
if(check_money(num,4))
for(num[4]=1;num[4]>=0;num[4]--)
if(check_money(num,5)==2)putmoney(num);
return 0;
}