喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 帮助

RSS 订阅当前论坛  

喜悦证交所已经关闭

上一主题 下一主题
     
标题: 排列函数  
 
seakingx
金牌会员
Rank: 6Rank: 6


UID 75142
精华 0
积分 1264
帖子 801
金钱 663 喜悦币
威望 0
人脉 601
阅读权限 70
注册 2006-6-18
来自 海口
状态 离线
[广告]: q m
排列函数

从网上参考了C++的代码, 模仿写了个PHP的, 有些朋友需要。
这个只是基础算法, 如果要实际应用, 输出部分要改成保存到数组中。

排列函数定义

<?php
function permute($pos){
  global 
$n ,$r $used $p  ;
/*如果已是第r个元素了,则可打印r个元素的排列 */
//如果要实际应用,这里要保存到数组中。
    
if ($pos==$r) {
        for (
$i=0$i<$r$i++)
             echo 
$p[$i]+1;
        echo 
"<br>";
        return;
    }
    for (
$i=0$i<$n$i++)
        if (
$used[$i]==0) { /*如果第i个元素未用过*/
/*使用第i个元素,作上已用标记,目的是使以后该元素不可用*/
            
$used[$i]++;
/*保存当前搜索到的第i个元素*/
            
$p[$pos] = $i;
/*递归搜索*/
           
permute($pos+1);
/*恢复递归前的值,目的是使以后改元素可用*/
 
$used[$i]--;
        }
}
?>
使用部分

<?php
$n 
$_POST['n'] ;
$r $_POST['r'] ;
if(
$n>=$r){
    
$used = array();
    
$p=array();
    for(
$i=1;$i<=$n;$i++){
        
$used[$i]=0;
    }
    
permute(0);
}
?>
演示地址 : http://demo.naturedesign.com.hk/client/test/mytest.php


 附件: 您所在的用户组无法下载或查看附件



锐升科技
2007-4-17 09:47 AM#1
查看资料  Blog  发短消息  QQ  顶部
 
seakingx
金牌会员
Rank: 6Rank: 6


UID 75142
精华 0
积分 1264
帖子 801
金钱 663 喜悦币
威望 0
人脉 601
阅读权限 70
注册 2006-6-18
来自 海口
状态 离线
[推荐阅读] 第一天实习。。。。午饭——大饼卷着馒头就米饭
排列算法是用递归实现的。
有空再改改组合算法。




锐升科技
2007-4-17 09:50 AM#2
查看资料  Blog  发短消息  QQ  顶部
 
oyzjin (oyzjin)
新手上路
Rank: 1
初级会员



UID 27272
精华 0
积分 11
帖子 12
金钱 11 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2004-3-26
状态 离线
[推荐阅读] 问题求助
组登算法:

<?php
    
function luck($start,$loop,$footnote,$choice){
        global 
$arr;
        for(
$i=$start;$i<=$loop;$i++){
            
$arr[$footnote]=$i;
            if (
count($arr)==$choice){
                
print_r($arr);
                
array_pop($arr);
                echo 
"<br />";
                continue;
            }
            
luck($i+1,$loop+1,$footnote+1,$choice);
        }
    }
    
$arr=array();
    
$start=1;
    
$end=7;
    
$choice=3;
    
$loop=$end-$choice+1;
    
$footnote=0;
    
luck($start,$loop,$footnote,$choice);
?>
2007-6-8 06:49 AM#3
查看资料  发短消息  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.024113 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP