100匹马驮100担货,大马一匹驮3担,中马一匹驮2担,小马两匹驮一担。
1.当大马、中马、小马每种不能少于一匹,有多少种组合法?
2.当可以缺少一种或缺二种,又有多少种组合法?
3.用while求第一种组合法。
4.用do-while求2组合法。
5.用三重或二重for循环求2种组合法。
6.除打印结果和多少种组合法外,还要分别打印三种算法所费机时多少。
#include<stdio.h>
int main()
{
int big,mid,small,sum=0;
for(big=0;big<33;big++)
for(small=0;small<100;small+=2)
for(mid=0;mid<50;mid++){
if(3*big+2*mid+small/2==100&&big+mid+small==100)
{
printf("big:%d\tmid:%d\tsmall:%d\n",big,mid,small);
sum++;
}
}
printf("%d\n",sum);
return 0;
}
#include <stdio.h>
int main()
{
int i,j,k;
for(i=1;i<100;i++){
for(j=1;j<100;j++){
for(k=1;k<100;k++){
if((i*3 + j*2 + k/2 == 100) && (i+j+k==100) && (k%2==0))
printf("大马%d,中马%d,小马%d",i,j,k);
}
}
}
return 0;
}
用FOR
#include <stdio.h>
void main()
{
int big, mid, small, sum = 0;
for (big = 0; big < 33; big++)
for (small = 0; small < 100; small += 2)
for (mid = 0; mid < 50; mid++)
{
if (3 * big + 2 * mid + small / 2 == 100 && big + mid + small == 100)
{
printf("big:%d\tmid:%d\tsmall:%d\n", big, mid, small);
sum++;
}
}
printf("%d\n", sum);
}
用while
#include <stdio.h>
void main()
{
int big, mid, small, sum = 0;
big = 0;
while (big < 33)
{
small = 0;
while (small < 100)
{
mid = 0;
while (mid < 50)
{
if (3 * big + 2 * mid + small / 2 == 100 && big + mid + small == 100)
{
printf("big:%d\tmid:%d\tsmall:%d\n", big, mid, small);
sum++;
}
mid++;
}
small += 2;
}
big++;
}
printf("%d\n", sum);
}