#include <stdio.h>
main()
{
int r,w,b,i;
for(r=0;r<=3;r++)
for(w=1;w<=5;w++)
for(b=0;b<=6;b++)
if(r+b+w==8 && w>0 )
printf("红球=%d 白球=%d 黑球=%d\n",r,w,b);
}
运行结果:
红球=0 白球=2 黑球=6
红球=0 白球=3 黑球=5
红球=0 白球=4 黑球=4
红球=0 白球=5 黑球=3
红球=1 白球=1 黑球=6
红球=1 白球=2 黑球=5
红球=1 白球=3 黑球=4
红球=1 白球=4 黑球=3
红球=1 白球=5 黑球=2
红球=2 白球=1 黑球=5
红球=2 白球=2 黑球=4
红球=2 白球=3 黑球=3
红球=2 白球=4 黑球=2
红球=2 白球=5 黑球=1
红球=3 白球=1 黑球=4
红球=3 白球=2 黑球=3
红球=3 白球=3 黑球=2
红球=3 白球=4 黑球=1
红球=3 白球=5 黑球=0
请按任意键继续. . .
类似1:
一个盒子中放有50个球,其中15个红的,19个白的,16个黑的,从中任取n个球(每种球最少取一个),问共有多少种不同的颜色搭配。
方法一:
#include <stdio.h>
main()
{
int i,j,k,l,n,s=0;
scanf("%d",&n);
for(i=1;i<=15;i++)
for(j=1;j<=19;j++)
for(k=1;k<=16;k++)
if(i+j+k==n && i>0 && j>0 && k>0)
s++;
printf("共有%d种搭配方式\n",s);
}
方法二:
#include <stdio.h>
main()
{
int i,j,k,l,n,s=0;
scanf("%d",&n);
for (i=1;i<=15&&i<n;i++)
{
for (j=1;j<=19&&j<n;j++)
{
for(k=1;k<=16&&k<n;k++)
{
if((i+j+k)==n)
{
s=s+1;
}
}
}
}
printf("共有%d种搭配方式\n",s);
}
8
共有21种搭配方式
请按任意键继续. . .
类似2:
将一张100元钞票换成等价值的10元,5元,2元和1元的小钞,每次换成40张小钞,要求每一种小钞都要有。编程求出所有可能的换法总数并输出各换法的组合。
#include <stdio.h>
main()
{
int i,j,k,m,s=0;
for(i=1;i<=10;i++)
for(j=1;j<=20;j++)
for(k=1;k<=50;k++)
for(m=1;m<=100;m++)
if((i*10+j*5+k*2+m*1)==100 && i+j+k+m==40)
{
printf("10元%3d张,5元%3d张, 2元%3d张, 1元%3d张\n",i,j,k,m);
s=s+1;
}
printf("共有%d种搭配方式\n",s);
}