Java 怎么使用递归或者循环输出数字 1 到 5 的所有可能性组合?

大佬们问一下,怎么使用递归或者循环输出数字1到5的所有可能性组合(如图)?急!!!java或者python都可以... 大佬们问一下,怎么使用递归或者循环输出数字 1 到 5 的所有可能性组合(如图)?急!!!java或者python都可以 展开
 我来答
仙戈雅3n
2017-12-08 · TA获得超过5790个赞
知道大有可为答主
回答量:2398
采纳率:75%
帮助的人:900万
展开全部
    private static final int DEFAULT_MAX=5;
    private static final int DEFAULT_SORT_SIZE=5;
    
    public static void main(String[] args) {
        int numbers[]={1,2,3,4,5};  
        
        for(int i=1;i<=DEFAULT_SORT_SIZE;i++){
             com(numbers, i);
        }
    }

    static void com(int numbers[],int m){
        int n=numbers.length;
        if(m>n) return;
        
        int temp[]=new int[10],i,k=0;
        
        for(i=0;i<m;i++) temp[i]=-1; 

        temp[k]=0;
        // 核心算法
        while(true){
            if(temp[k]>=n)
            {
                if(k==0) break;
                --k;
                temp[k]+=1;
            }
            else if(k==m-1)
            {
                for(int j=0;j<m;j++) System.out.print(numbers[temp[j]]+" ");
                System.out.println();
                temp[k]+=1;
            }
            else{
                ++k;
                temp[k]=temp[k-1]+1;
            }
            
        }
    }
弯冬掰不直
2017-12-08 · TA获得超过915个赞
知道小有建树答主
回答量:421
采纳率:88%
帮助的人:93.4万
展开全部

#include <stdio.h>  
#include <stdlib.h>  
#include <memory.h>  
#define MAX 6  
/* 
将数字1,2,3,4,5的组合全部输出,每个数字仅能出现一次  
*/  
void DFS(int *output, int val, int pos, bool *isSelected)  
{  
     if(isSelected[val]) // if this number is exist, return   
          return ;  
     output[pos] = val;  
     isSelected[val] = true; // save the scene  
     if(pos == MAX-2)  
     {  
            for(int i=0; i<MAX-1; i++)  
                    printf("%d ", output[i]);  
            printf("/n");   
            isSelected[val] = false; // recover the scene, one way to end this DFS function  
            return ;  
     }  
     for(int i=1; i <MAX; i++)  
     {  
            DFS(output, i, pos+1, isSelected);             
     }  
     isSelected[val] = false; // recover the scene, another way to end this DFS function  
}  
int main()  
{    
    bool isSelected[MAX];  
    int output[MAX];  
    for(int i=1; i<MAX; i++)  
    {  
            memset(isSelected, false, sizeof(isSelected));  
            DFS(output, i, 0, isSelected);     
    }  
    system("pause");  
    return 0;  
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式