您的位置:程序门 -> .net技术 -> c#



组合问题,帮忙给改进一下,菜鸟妹妹问


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


组合问题,帮忙给改进一下,菜鸟妹妹问
发表于:2007-03-27 10:13:13 楼主
题目:题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?  
using   system;
using   system.collections.generic;
using   system.text;

namespace   consoleapplication1
{
        class   program
        {
                static   void   main(string[]   args)
                {
                       
                int   a;
                int   b;
                int   c;
                for   (a   =   1;   a   <   5;   a++)
                        for   (b   =   1;   b   <   5;   b++)
                                for   (c   =   1;   c   <   5;   c++)
                                {
                                                console.writeline( "{0} ",   a*100+b*10+c);    
                                }
                }
        }
}
我这样编写了,这能出现所有的三位数,请哥哥姐姐帮帮忙,再给加条语句,能显示三位数的个数,而不显示重复数字的三位数,谢谢了,帮帮忙吧:)
发表于:2007-03-27 10:20:091楼 得分:0
using   system;
using   system.collections;
using   system.collections.generic;
using   system.text;

namespace   consoleapplication4
{
        class   program
        {
                static   void   main(string[]   args)
                {
                        arraylist   al   =   new   arraylist();
                        int   a;
                        int   b;
                        int   c;
                        for   (a   =   1;   a   <   5;   a++)
                                for   (b   =   1;   b   <   5;   b++)
                                        for   (c   =   1;   c   <   5;   c++)
                                        {
                                                string   tmp   =   string.format( "{0} ",a*100+b*10+c);
                                                if(al.indexof(tmp)   <   0)
                                                        al.add(tmp);
                                        }

                        foreach(string   tmp   in   al)
                                console.writeline(tmp);

                        console.writeline( "总数:{0} ",al.count);
                        console.read();
                }
        }
}
发表于:2007-03-27 10:57:442楼 得分:0
谢谢你:)这么及时得帮我解答,但是,还有一个问题,题目要求不显示各位相同数字的三位数,我试了   ,程序结果中还是有
发表于:2007-03-27 10:59:163楼 得分:0
排列组合的问题
发表于:2007-03-27 11:00:464楼 得分:0
using   system;
using   system.collections;
using   system.collections.generic;
using   system.text;

namespace   consoleapplication4
{
        class   program
        {
                static   void   main(string[]   args)
                {
                        arraylist   al   =   new   arraylist();
                        int   a;
                        int   b;
                        int   c;
                        for   (a   =   1;   a   <   5;   a++)
                                for   (b   =   1;   b   <   5   &&   b!=a;   b++)
                                        for   (c   =   1;   c   <     5   &&b!=c;   c++)
                                        {
                                                string   tmp   =   string.format( "{0} ",a*100+b*10+c);
                                                if(al.indexof(tmp)   <   0)
                                                        al.add(tmp);
                                        }

                        foreach(string   tmp   in   al)
                                console.writeline(tmp);

                        console.writeline( "总数:{0} ",al.count);
                        console.read();
                }
        }
}
发表于:2007-03-27 11:03:405楼 得分:0
学习..
发表于:2007-03-27 11:09:256楼 得分:0
还是   有问题,缺失了好多数的呀(::
发表于:2007-03-27 11:12:577楼 得分:0
.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去  
      掉不满足条件的排列。
老师给出了分析问题的思路
发表于:2007-03-27 13:10:118楼 得分:0
问题解决了
using   system;
using   system.collections;
using   system.collections.generic;
using   system.text;

namespace   consoleapplication4
{
        class   program
        {
                static   void   main(string[]   args)
                {
                        int   a;
                        int   b;
                        int   c;
                        int   d;
                        d   =   0;
                        for   (a   =   1;   a   <   5;   a++)
                                for   (b   =   1;   b   <   5   ;   b++)
                                        for   (c   =   1;   c   <   5   ;   c++)
                                                if   (a   !=   c   &&   a   !=   b   &&   b   !=   c)
                                                {
                                                        console.writeline( "{0} ",   a   *   100   +   b   *   10   +   c);
                                                        d   =   d   +   1;
                                                }
                        console.writeline( "总数:{0} ",   d);
                               
                }
        }
}
发表于:2007-03-27 13:20:159楼 得分:0
对,添加
  if   (a   !=   c   &&   a   !=   b   &&   b   !=   c)
判断
发表于:2007-03-27 13:31:1510楼 得分:0
呃...

嵌套循环是最笨的方法,如果是笔试题这么写,肯定被踢飞...
发表于:2007-03-28 16:13:5811楼 得分:0
楼上的朋友,那有没有聪明一点的方法呢?以防治被踢。。。
发表于:2007-03-28 16:25:2512楼 得分:0
算法问题发到算法版
发表于:2007-03-28 16:55:1313楼 得分:0
楼上的朋友,那有没有聪明一点的方法呢?以防治被踢。。。
------------------------------------------------------

解法很多,但基本都用到递归.


快速检索

最新资讯
热门点击