1 条题解

  • 0
    @ 2025-2-14 21:09:17

    C++ :

    #include<cstdio>
    #include<cstdlib>
    #include<iostream>
    using namespace std;
    int n,r;
    bool a[25]={0};
    int b[25];
    int print()
    {
    	for(int i=1;i<=r-1;++i)
    	{
    		printf("%d ",b[i]);
    	}
    	printf("%d\n",b[r]);
    }
    int search(int i)
    {
    	for(int j=1;j<=n;++j)
    	{
    		if(a[j]==0&&j>b[i-1])
    		{
    			b[i]=j;
    			a[j]=1;
    			if(i==r)
    			{
    				print();
    			}
    			else
    			{
    				search(i+1);
    			}
    			a[j]=0;
    		}
    		
    	}
    }
    int main()
    {
    	cin>>n>>r;
    	search(1);
    	return 0;
    }
    

    Pascal :

    var i,j,k,l,m,n:longint;
     a:array[1..100] of byte;
     procedure  try(num,l:longint);
       var i,j:longint;
        begin
         if num=k+1 then begin for i:=1 to k do begin write(a[i]);if i<>k then write(' ');end;writeln;exit;end;
         for i:=l+1 to m-k+num do
           begin
            a[num]:=i;try(num+1,i);
           end;
        end;
      begin
       read(m,k);
        try(1,0);
      end.
    
    

    Java :

    import java.util.Scanner;
    
    public class Main {
    	static int M,N;
    	static int [] arr;
    	public static void main(String[] args) {
    		Scanner cin = new Scanner(System.in);
    		M = cin.nextInt();
    		N = cin.nextInt();
    		arr = new int[N+1];
    		combin(M,N);
    	}
    	public static void combin(int m,int n) {
    		if(n == 0) {
    			for(int i = 1; i <= N; i ++) {
    				System.out.print(arr[i]);
    				if(i == N)
    					System.out.println();
    				else
    					System.out.print(" ");
    			}
    		}else if(m < n){
    			return ;
    		}else {
    			combin(m-1,n);
    			arr[n] = m;
    			combin(m-1,n-1);
    			}
    		}
    }
    
    • 1

    信息

    ID
    652
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者