| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1290 人关注过本帖
标题:公司一道算法题,求大神给其他思路!
只看楼主 加入收藏
子弹上膛
Rank: 1
等 级:新手上路
帖 子:22
专家分:4
注 册:2012-12-5
结帖率:50%
收藏
 问题点数:0 回复次数:7 
公司一道算法题,求大神给其他思路!
等 级:新手上路
帖 子:20
专家分:4
注 册:2012-12-5
结帖率:50%
楼主   问题点数:0  回复次数:0         
公司一道面试题,求大神给思路!
输入1234
输出
1
2
3
4
12
13
14
23
24
34
123
124
234
1234
我的思路是,全排列,然后按条件输出,但是空间复杂度和时间复杂度都挺高,求其他思路!
搜索更多相关主题的帖子: 新手上路 宝贝 空间 
2015-05-01 20:25
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
public class Demo {
    public static void main(String[] args){  
            for(int i=1;i<5;i++)
            System.out.println(i);
            for(int i=1;i<5;i++){
            for(int j=i+1;j<5;j++)
            System.out.println(i+""+j);
            }
            for(int i=1;i<5;i++){
            for(int j=i+1;j<5;j++)
            for(int k=j+1;k<5;k++)
            if(i==1&&j==3&&k==4)break;
            else
                System.out.println(i+""+j+""+k);
            }
            System.out.println(1234);
        }  

}

剑栈风樯各苦辛,别时冰雪到时春
2015-05-01 20:53
子弹上膛
Rank: 1
等 级:新手上路
帖 子:22
专家分:4
注 册:2012-12-5
收藏
得分:0 
回复 2楼 林月儿
你这样只能满足这个数据,我要是扩展N个数就不适应了
2015-05-01 20:57
Icytxw
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2015-5-3
收藏
得分:0 
简单,i从0开始循环,j从i+1开始循环,将i*10+j赋值给一个arraylist对象,重写tostring方法输出就可以了
2015-05-03 00:15
秦时的明月夜
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:13
帖 子:126
专家分:504
注 册:2013-3-12
收藏
得分:0 
就是子集的可能还要排列……
程序代码:
import java.util.Scanner;

public class 打印所有集合全排列 {
    public static void main(String[] args) {
       
        Scanner sc=new Scanner(System.in);
        char c[]=sc.next().toCharArray();
        char b[];
        for (int i = 1; i <=c.length; i++) {
            b=new char[i];
            组合(c.length,i,c,b);
        }
    }
    public  static void 组合(int n,int k,char c[],char b[]){
        int i;
        if(k==0){
            String s="";
            for (int j = 0; j < b.length; j++) {
                s=s+b[j]+"";
            }
            全排列(0,s.toCharArray());
            return;
        }else{
            for (int j = n-1; j >=0; j--) {
                    b[k-1]=c[j];
                    组合(j,k-1,c,b);
            }
           
        }
       
    }
    public static void 全排列(int k,char c[]){
        if(k>=c.length){
            for (int i = 0; i < c.length; i++) {
                System.out.print(c[i]);
            }
            System.out.println();
            return ;
        }
        for (int i = k; i < c.length; i++) {
            {char temp=c[i];c[i]=c[k];c[k]=temp;}
            全排列( k+1, c);
            {char temp=c[i];c[i]=c[k];c[k]=temp;}
        }
    }
}
2015-05-03 20:32
秦时的明月夜
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:13
帖 子:126
专家分:504
注 册:2013-3-12
收藏
得分:0 
看错了…………是组合……
2015-05-03 20:33
秦时的明月夜
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:13
帖 子:126
专家分:504
注 册:2013-3-12
收藏
得分:0 
组合数…………
程序代码:
import java.util.Scanner;

public class 打印组合数 {
    public static void main(String[] args) {
       
        Scanner sc=new Scanner(System.in);
        char c[]=sc.next().toCharArray();
        char b[];
        for (int i =1; i <=c.length; i++) {
            b=new char[i];
            组合(c.length,i,c,b);
        }
    }
    public  static void 组合(int n,int k,char c[],char b[]){
        int i;
        if(k==0){
//            String s="";
            for (int j = 0; j < b.length; j++) {
                System.out.print(b[j]);
            }
            System.out.println();
            //全排列(0,s.toCharArray());
            return;
        }else{
            for (int j = n-1; j >=0; j--) {
                    b[k-1]=c[j];
                    组合(j,k-1,c,b);
            }
           
        }
       
    }
//    public static void 全排列(int k,char c[]){
//        if(k>=c.length){
//            for (int i = 0; i < c.length; i++) {
//                System.out.print(c[i]);
//            }
//            System.out.println();
//            return ;
//        }
//        for (int i = k; i < c.length; i++) {
//            {char temp=c[i];c[i]=c[k];c[k]=temp;}
//            全排列( k+1, c);
//            {char temp=c[i];c[i]=c[k];c[k]=temp;}
//        }
//    }
}
2015-05-03 20:43
秦时的明月夜
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:13
帖 子:126
专家分:504
注 册:2013-3-12
收藏
得分:0 
回复 7楼 秦时的明月夜
程序代码:
abcd//输入的字符串……
d
c
b
a
cd
bd
ad
bc
ac
ab
bcd
acd
abd
abc
abcd
2015-05-03 20:44
快速回复:公司一道算法题,求大神给其他思路!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018416 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved