| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2194 人关注过本帖
标题:编程
只看楼主 加入收藏
baibi12360
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-10-9
收藏
 问题点数:0 回复次数:12 
编程
设有编号1。2。3。4的四列车,顺序进一个栈底结构的站台,具体写出这四辆列车开出车站的所有可能的顺序。
搜索更多相关主题的帖子: 编程 
2008-10-09 10:57
hellson
Rank: 2
来 自:北京
等 级:新手上路
威 望:4
帖 子:195
专家分:0
注 册:2008-9-1
收藏
得分:0 
写3个for搞个全排列?

春了夏了秋冬了,来了来了又来了
相信我的帖子打开都很快,看我头像就知道了
2008-10-09 11:01
hellson
Rank: 2
来 自:北京
等 级:新手上路
威 望:4
帖 子:195
专家分:0
注 册:2008-9-1
收藏
得分:0 
c#
程序代码:
using System;
using System.Collections.Generic;

namespace show1234
{
    class MainClass
    {
        public static void Main(string[] args)
        {
            int i,j,k;
            for (i=1;i<5;i++)
                for (j=1;j<5;j++)
                    for(k=1;k<5;k++)
                        if(i!=j && i!=k && j!=k)
                            Console.Write(i.ToString()+j.ToString()+k.ToString()+(10-i-j-k).ToString()+" ");
            Console.ReadKey();
        }
    }
}

春了夏了秋冬了,来了来了又来了
相信我的帖子打开都很快,看我头像就知道了
2008-10-09 11:14
Eastsun
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:802
专家分:0
注 册:2006-12-14
收藏
得分:0 
LS想的太简单了

My BlogClick Me
2008-10-09 12:01
Eastsun
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:802
专家分:0
注 册:2006-12-14
收藏
得分:0 
这四辆火车出站的总数不是4! = 24
而是14种

My BlogClick Me
2008-10-09 12:10
cupt
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-2-28
收藏
得分:0 
同意Eastsun,确实不能直接全排列了事,那样就不是栈了
2008-10-09 14:00
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
写出全排列还得判断这个序列是否满足栈的要求

倚天照海花无数,流水高山心自知。
2008-10-09 14:39
hellson
Rank: 2
来 自:北京
等 级:新手上路
威 望:4
帖 子:195
专家分:0
注 册:2008-9-1
收藏
得分:0 
糗大了,数据结构0分

可以把入栈操作定为1,出栈定义为0
那么4位数的操作比如1234进4321出 可以理解为11110000
所有的操作均为1xxxxxx0的格式

xxxxxx 可能性有2^6=64种,循环检测一下,比如a[6]=xxxxxx
计算对a 第i位的0-i 个数中出现的 0和1个数, 0个数<= 1个数+1 且 1的个数<=3 则符合条件
模拟栈操作即可得到出栈序列
用深度搜索的话,网上有代码

春了夏了秋冬了,来了来了又来了
相信我的帖子打开都很快,看我头像就知道了
2008-10-10 09:44
Eastsun
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:802
专家分:0
注 册:2006-12-14
收藏
得分:0 
还是用代码说话吧,俺来个[url=http://eastsun.]Scala[/url]版的:
程序代码:
object Simple {
    def listAll(start :Int,end :Int):List[List[Int]] = {
        if(start >= end) return List(Nil)
        for{it <- List.range(start,end)
            sl <- listAll(start+1,it+1)
            el <- listAll(it+1,end)
        } yield sl:::start::el
    }
    def main(args :Array[String]){
        for(ls <- listAll(1,5)) println(ls.mkString("->"))
    }
}


运行结果:
1->2->3->4
1->2->4->3
1->3->2->4
1->3->4->2
1->4->3->2
2->1->3->4
2->1->4->3
2->3->1->4
3->2->1->4
2->3->4->1
2->4->3->1
3->2->4->1
3->4->2->1
4->3->2->1

My BlogClick Me
2008-10-10 12:59
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
收藏
得分:0 
回复 9# Eastsun 的帖子

2008-10-10 19:03
快速回复:编程
数据加载中...
 
   



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

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