黑马程序员技术交流社区
标题:
来一道,很简单的排列题,看谁能把它做出来
[打印本页]
作者:
354620815
时间:
2014-9-27 22:48
标题:
来一道,很简单的排列题,看谁能把它做出来
{:3_47:}{:3_47:}问:有六个数 0,1,2,3,4,5 取其中的任意三个数组成一个能被5整除的数,如120,125,135,130,并把所有符合条件的三位数打印出来。{:3_47:}{:3_47:}
作者:
杨佳名
时间:
2014-9-28 09:04
import java.util.*;
public class MainTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Test.getNum();
}
}
class Test {
public static void getNum() {
int n = 0;
for (int i = 1; i <= 5; i++) { //百位上的数 从1开始
for (int j = 0; j <= 5; j++) { //十位上的数
if (i != j) { //不与百位数相同
for (int k = 0; k <= 5; k++) { //个位上的数
if (i != k && j != k) { //不与百位、十位数相同
n = i * 100 + j * 10 + k;
if (n % 5 == 0) //能否被五整除
System.out.print(n+"\t");
}
}
}
}
}
}
}
复制代码
作者:
不系之舟王
时间:
2014-9-28 09:24
没在电脑旁,想了一下,用三个for循环吧,最外层从1开始,其余的应该不难吧
作者:
354620815
时间:
2014-9-28 21:36
杨佳名 发表于 2014-9-28 09:04
如果取其中的任意5个数组成一个能被5整除的数,要多少个for循环{:3_47:}
作者:
天弓
时间:
2014-9-28 21:40
好给力的题
作者:
杨佳名
时间:
2014-9-28 22:36
354620815 发表于 2014-9-28 21:36
如果取其中的任意5个数组成一个能被5整除的数,要多少个for循环
有什么最优的办法吗?我刚开始学只想到了FOR循环
作者:
郑飞
时间:
2014-9-29 06:38
354620815 发表于 2014-9-28 21:36
如果取其中的任意5个数组成一个能被5整除的数,要多少个for循环
给你递归{:3_47:}
import java.util.ArrayList;
import java.util.Collections;
//有六个数 0,1,2,3,4,5 取其中的任意三个数组成一个能被5整除的数,如120,125,135,130,并把所有符合条件的三位数打印出来
class Test
{
static ArrayList<String> myList = new ArrayList<String>();
public static void main(String[] args)
{
ArrayList<String> src = new ArrayList<String>();//初始化src
src.add("0");
src.add("1");
src.add("2");
src.add("3");
src.add("4");
src.add("5");
System.out.println("所有3位数:");
addNum(src,new ArrayList<String>(),3);//主方法: 结果是把全排列数据加入到myList
printList(myList);//打印myList
//最后一步不封装方法了
System.out.println("最终结果:");
for(String s : myList)
{
int i = Integer.parseInt(s);
if(i>99&&i%5==0)//三位数 除5不余
System.out.print(s+" ");
}
}
//此方法返回位数为numCount的所有数字组合
public static void addNum(ArrayList<String> src,ArrayList<String> dest,int numCount)
{
ArrayList<String> tempsrc = new ArrayList<String>(src.subList(0, src.size()));//初始化临时src集合
tempsrc.removeAll(dest);//扣除已经被移到目标集合中的元素
for(int i =0;i<tempsrc.size();i++)
{
ArrayList<String> temp = new ArrayList<String>(dest.subList(0, dest.size()));//初始化临时desc集合
temp.add(tempsrc.get(i));//移动一个元素
if(temp.size()==numCount)
{
putIntoList(temp);//收集全排列集合
}
if(temp.size()<numCount)//控制需要获得数字的位数
addNum(src,temp,numCount);//递归 每次进入方法数字位数加1
}
}
public static void putIntoList(ArrayList<String> list)
{
StringBuilder sb = new StringBuilder();
for(String t : list)
sb.append(t);
myList.add(sb.toString());
}
public static void printList(ArrayList<String> list)
{
for(String str : list)
System.out.print(str+" ");
System.out.println();
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2