Rumah > pembangunan bahagian belakang > tutorial php > ABCCBA从1到9不同数字组成算法

ABCCBA从1到9不同数字组成算法

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2016-06-20 12:53:31
asal
1929 orang telah melayarinya
ABCCBA从0到9不同数字组成算法
要求:ABC不重复
举例:012210、013310......019910。
   ......
   098890、097790......091190。
   ......
   980089、981189......987789。
   ......
   901109、902209......908809。等等
   

也就是能算出用 (0-9组成) 的所有 ABCCBA 不重复的 6位数。

可能会比较麻烦!希望高手能帮我解决一下。非常感谢。

本人不懂程序。能直接给出数字也行。当然最好能付上代码。


回复讨论(解决方案)

$a = Combination(range(0, 9), 3);foreach($a as $v) $r[] = join('', array_merge($v, array_reverse($v)));print_r($r);
Salin selepas log masuk
Array(    [0] => 789987    [1] => 689986    [2] => 679976    [3] => 678876    [4] => 589985    [5] => 579975    [6] => 578875    [7] => 569965    [8] => 568865    [9] => 567765    [10] => 489984    [11] => 479974    [12] => 478874    [13] => 469964    [14] => 468864    [15] => 467764    [16] => 459954    [17] => 458854    [18] => 457754    [19] => 456654    [20] => 389983    [21] => 379973    [22] => 378873    [23] => 369963    [24] => 368863    [25] => 367763    [26] => 359953    [27] => 358853    [28] => 357753    [29] => 356653    [30] => 349943    [31] => 348843    [32] => 347743    [33] => 346643    [34] => 345543    [35] => 289982    [36] => 279972    [37] => 278872    [38] => 269962    [39] => 268862    [40] => 267762    [41] => 259952    [42] => 258852    [43] => 257752    [44] => 256652    [45] => 249942    [46] => 248842    [47] => 247742    [48] => 246642    [49] => 245542    [50] => 239932    [51] => 238832    [52] => 237732    [53] => 236632    [54] => 235532    [55] => 234432    [56] => 189981    [57] => 179971    [58] => 178871    [59] => 169961    [60] => 168861    [61] => 167761    [62] => 159951    [63] => 158851    [64] => 157751    [65] => 156651    [66] => 149941    [67] => 148841    [68] => 147741    [69] => 146641    [70] => 145541    [71] => 139931    [72] => 138831    [73] => 137731    [74] => 136631    [75] => 135531    [76] => 134431    [77] => 129921    [78] => 128821    [79] => 127721    [80] => 126621    [81] => 125521    [82] => 124421    [83] => 123321    [84] => 089980    [85] => 079970    [86] => 078870    [87] => 069960    [88] => 068860    [89] => 067760    [90] => 059950    [91] => 058850    [92] => 057750    [93] => 056650    [94] => 049940    [95] => 048840    [96] => 047740    [97] => 046640    [98] => 045540    [99] => 039930    [100] => 038830    [101] => 037730    [102] => 036630    [103] => 035530    [104] => 034430    [105] => 029920    [106] => 028820    [107] => 027720    [108] => 026620    [109] => 025520    [110] => 024420    [111] => 023320    [112] => 019910    [113] => 018810    [114] => 017710    [115] => 016610    [116] => 015510    [117] => 014410    [118] => 013310    [119] => 012210)
Salin selepas log masuk

Combination 函数定义
function Combination( $arr, $num=0) {	$arr = array_values($arr);	$len = count($arr);	if($num == 0) $num = $len;	$res = array();	for($i=1,$n=pow(2, $len); $i<$n; ++$i) {		$tmp = str_pad(base_convert($i, 10, 2), $len, '0', STR_PAD_LEFT);		$t = array();		for($j=0; $j<$len; ++$j) {			if($tmp{$j} == '1') {				$t[] = $arr[$j];			}		}		if(count($t) == $num) $res[] = $t;	}	return $res;  }
Salin selepas log masuk

如果 012210 和 021120 不算重复的话,可以这样写

for($a=0; $a<10; $a++)  for($b=0; $b<10; $b++)    for($c=0; $c<10; $c++)      if($a != $b && $a != $c && $b != $c) printf("%d%d%d%d%d%d\n", $a, $b, $c, $c, $b, $a);
Salin selepas log masuk
012210013310014410015510016610017710018810019910021120023320024420025520026620027720......
Salin selepas log masuk

谢谢!辛苦版主了.会编程真好.要是人工自己一个一个来.估计一天也搞不完.

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan