程序代码:
//#include<stdio.h>
#include <iostream>
using namespace std;
void main()
{
int i,j,k,sum=0; //i为5分的个数,j为2分的个数,k为1分的个数,sum为符合组合的次数.
for(i=0;i<=7;i++) //根据5*(8+i)+2*(8+j)+1*(8+k)=100 简化为: 5i+2j+k=36 推算 5分最多7个,2分最多18个,1分最多36个,以此为循环次数
for(j=0;j<=18;j++)
for (k=0;k<=36;k++)
{
if ((5*i+2*j+1*k)==36) //if((5*(i+8)+2*(j+8)+1*(k+8))==100) 判断条件也可以改成这个,我那个是化简后的,减少循环次数,减少运算时间.
{
cout<<"5*"<<i+8<<"+2*"<<j+8<<"+1*"<<k+8<<"="<<5*(i+8)+2*(j+8)+1*(k+8)<<endl; //输出并验证.
sum++;
}
}
cout<<sum<<endl; //输出统计数量
//printf("sum=%d",sum);
}
以上是C++调试,C语言部分被我注释掉了,LZ请自行转换成C语言的引用跟输出代码.
[
本帖最后由 ydown 于 2013-6-1 11:33 编辑 ]