那位能帮我把这段程序变成delphi的(50分)

  • 主题发起人 主题发起人 seafox
  • 开始时间 开始时间
S

seafox

Unregistered / Unconfirmed
GUEST, unregistred user!
#include <iostream.h>
//在此为了调试方便我就先设了外部变量,可根据具体情况再做调整
int N(0),M(0),count(0),list[30];
//设置某个组合中的某个数,k为该组合中的第k个数(k是从0开始算的)
void SetNum(int k)
{
int t(0),sum(0);
//如果递归调用时出现超出则返回,我觉的该语句不要也没关系,
//因为下面的语句决定了k最大只能到N-1,
//同时可在此假如出错处理语句
if(k>=N||k<0)
return;
if(k==0)
list[k]=0;
else
list[k]=list[k-1];
//对N个数中的每一位在规定的范围内进行遍历
for(list[k]++;list[k]<31;list[k]++)
{
//判断是否是最后一位数,调用也是从此结束的
if(k==N-1)
{
//求和
for(t=0;t<N;t++)
sum=sum+list[t];
//比较后如果是满足要求的则输出
if(sum==M)
{
for(t=0;t<N;t++)
cout<<list[t]<<"/t";
cout<<endl;
count++;
}
//对sum清零,准备下次计算
sum=0;
}
//未完成对各位的数据选择,进行递归调用
else
SetNum(k+1);
}
}
void main()
{
//保证输入的数据是合法的
do{
cout<<"Please input the N(0<N<30) and M(M>0):";
cin>>N>>M;
}while(N>30||N<0||M<=0);
//因为开始时,需从第一位开始,所以用参数0设置调用函数
SetNum(0);
//输出得到的数据组合列的数目
cout<<"总组合数为:"<<count<<endl;
}
 
你的E——MAIL?
 
to nexthawks
我的email:tommail@sina.com
 
这个不难!
 

Similar threads

D
回复
0
查看
815
DelphiTeacher的专栏
D
I
回复
0
查看
603
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
473
import
I
后退
顶部