回 帖 发 新 帖 刷新版面

主题:不是DOG的请进!!!

输入N和M,N表示范围,M表示N中的几个数,输出所有情况。
例:输入 3,2;
输出  1,2
      1,3
      2,3

回复列表 (共12个回复)

沙发

var t,m,n:longint;
procedure dg(x:integer;s:string);
var k:integer;
    i:string;
begin
  if x=n+1 then begin
    t:=t+1;
    writeln(t,':',s);
    end else begin
    for k:=1 to m do begin
    str(k,i);
     if(pos(i,s)=0)then begin
      dg(x+1,s+i)
      end;
    end;
end;
end;
begin
  readln(m,n);
  if(m<=9)and(m>0) then begin
  dg(1,'');
  end;
end.

板凳

+分

3 楼

来个简单一点的:
readln(m,n);
for i:=1 to n do
  a[i]:=i;
repeat
  for i:=1 to n-1 do
    write(a[i],' ');
  writeln(a[n]);
  j:=n;
  while a[j]=m-n+j do dec(j);
  a[j]:=a[j]+1;
  for i:=j+1 to n do
    a[i]:=a[i-1]+1;
until a[1]=m-n+1;
for i:=1 to n-1 do
  write(a[i],' ');
writeln(a[n]);

4 楼

记得加分啊!

5 楼

这是排列数还是组合数?

6 楼

排列啊,5楼那位,谢谢

7 楼

5楼的,我的程序就是穷举排列数了

8 楼

找抽帖!
鉴定完毕!

9 楼

好恶劣的主题呀~

10 楼

三楼的也够简单,数组都没定义.

我来回复

您尚未登录,请登录后再回复。点此登录或注册