Java编程--数字组合排列

某钢厂在对成品钢卷进行排列并存放,假设钢卷编号分别为NO.3,NO.4,NO.5,NO.6,NO.7,NO.8,请用你熟悉的语法编写一个函数,打印出所有不同的组合排列,如:345678, 876543等,要求:NO.4号钢卷不能在第3位,NO.3和NO.5号钢卷不能相邻。

/**
 * 案例分析
 * 需求:1. 数字3-8每个字都存在且不能重复2.第三位不能为4 3. 数字3和5不能相邻
 * 方案:1.每个数字必须都出现--遍历3-8组成的数组,indexOf(),每个数字在组成数字的字符串中都存在,既能解决每个数字都存在还能保证不重复;
 *     2.排除第三位为4的所有情况
 *     3.组成数字的字符串,截取判断"35"和"53"的情况,剔除
 * @author Ali
 *
 */

package com.nutz.text;

public class Index {
	public static void main(String[] args) {
		int count = 0;
		for(int i =345678; i<=876543; i++) {
			if(number(String.valueOf(i))){
				System.out.print(i+" ");
				count++;
			}
		}
		System.out.println("");
		System.out.println(count);
	}
	private static String[] mustNumber = {"3","4","5","6","7","8"};
	public static boolean number(String str) {
		
		// 遍历检查是否包含这6个数字
		for(String num : mustNumber) {
			if(str.indexOf(num)<0) {
				return false;
			}
		}
		
		// 派出4不在第三个位置
		if(str.charAt(2)==4) {
			return false;
		}
		
		// 检查35相邻
		if(str.indexOf("35")>=0 || str.indexOf("53")>=0) {
			return false;
		}
		
		return true;
	}
}

345678 345687 345768 345786 345867 345876 346578 346587 346758 346785 346857 346875 347568 347586 347658 347685 347856 347865 348567 348576 348657 348675 348756 348765 364578 364587 364758 364785 364857 364875 365478 365487 365748 365784 365847 365874 367458 367485 367548 367584 367845 367854 368457 368475 368547 368574 368745 368754 374568 374586 374658 374685 374856 374865 375468 375486 375648 375684 375846 375864 376458 376485 376548 376584 376845 376854 378456 378465 378546 378564 378645 378654 384567 384576 384657 384675 384756 384765 385467 385476 385647 385674 385746 385764 386457 386475 386547 386574 386745 386754 387456 387465 387546 387564 387645 387654 436578 436587 436758 436785 436857 436875 437568 437586 437658 437685 437856 437865 438567 438576 438657 438675 438756 438765 456378 456387 456738 456783 456837 456873 457368 457386 457638 457683 457836 457863 458367 458376 458637 458673 458736 458763 463758 463785 463857 463875 465738 465783 465837 465873 467385 467583 468375 468573 473658 473685 473856 473865 475638 475683 475836 475863 476385 476583 478365 478563 483657 483675 483756 483765 485637 485673 485736 485763 486375 486573 487365 487563 543678 543687 543768 543786 543867 543876 546378 546387 546738 546783 546837 546873 547368 547386 547638 547683 547836 547863 548367 548376 548637 548673 548736 548763 563478 563487 563748 563784 563847 563874 564378 564387 564738 564783 564837 564873 567348 567384 567438 567483 567834 567843 568347 568374 568437 568473 568734 568743 573468 573486 573648 573684 573846 573864 574368 574386 574638 574683 574836 574863 576348 576384 576438 576483 576834 576843 578346 578364 578436 578463 578634 578643 583467 583476 583647 583674 583746 583764 584367 584376 584637 584673 584736 584763 586347 586374 586437 586473 586734 586743 587346 587364 587436 587463 587634 587643 634578 634587 634758 634785 634857 634875 637458 637485 637548 637584 637845 637854 638457 638475 638547 638574 638745 638754 643758 643785 643857 643875 645738 645783 645837 645873 647385 647583 648375 648573 654378 654387 654738 654783 654837 654873 657348 657384 657438 657483 657834 657843 658347 658374 658437 658473 658734 658743 673458 673485 673845 673854 674385 674583 675438 675483 675834 675843 678345 678543 683457 683475 683745 683754 684375 684573 685437 685473 685734 685743 687345 687543 734568 734586 734658 734685 734856 734865 736458 736485 736548 736584 736845 736854 738456 738465 738546 738564 738645 738654 743658 743685 743856 743865 745638 745683 745836 745863 746385 746583 748365 748563 754368 754386 754638 754683 754836 754863 756348 756384 756438 756483 756834 756843 758346 758364 758436 758463 758634 758643 763458 763485 763845 763854 764385 764583 765438 765483 765834 765843 768345 768543 783456 783465 783645 783654 784365 784563 785436 785463 785634 785643 786345 786543 834567 834576 834657 834675 834756 834765 836457 836475 836547 836574 836745 836754 837456 837465 837546 837564 837645 837654 843657 843675 843756 843765 845637 845673 845736 845763 846375 846573 847365 847563 854367 854376 854637 854673 854736 854763 856347 856374 856437 856473 856734 856743 857346 857364 857436 857463 857634 857643 863457 863475 863745 863754 864375 864573 865437 865473 865734 865743 867345 867543 873456 873465 873645 873654 874365 874563 875436 875463 875634 875643 876345 876543
480

你可能感兴趣的:(Java编程--数字组合排列)