面试题,没有做出来
public class Test1 {
static int k=0;
;static final String[] s={ "1 ", "2 ", "3 ", "4 ", "5 "};
public static void getOne(String ret,int pos){
if(pos> =4){
System.out.println(ret);
k=k+1;
return;
}
for(int i=0;i <s.length;i++){
ret+=s[i];
getOne(ret, pos+1);
ret=ret.substring(0, pos-1);
}
}
public static void main(String[] args){
String num= " ";
getOne(num, 1);
System.out.println(k);
}
}
如果我只得第五位 四位的不要 应该怎么弄呢?
[解决办法]
if(ret.charAt(0)== '5 '){System.out.println(ret);}
[解决办法]
if(ret> =10000){System.out.println(ret);}
[解决办法]
for(int i=0;i <s.length;i++){
//加一句
if(i!=3)
ret+=s[i];
getOne(ret, pos+1);
ret=ret.substring(0, pos-1);
}
[解决办法]
你先把题目描述好吧..
[解决办法]
不明白什么意思
[解决办法]
全排列吧,
最小与最大,只要每次选取最大的就是最大,每次选取最小的就是最小
[解决办法]
import java.io.*;
public class Test{
public static void main(String[] args) throws Exception
{
FileWriter out = new FileWriter( "result.txt ");
int count = 0;
for(int i = 123;i <= 321;i++)
{
String s = new String(i + " , ");
if(s.indexOf( "4 ")> =0)
{
continue;
}
else if(s.indexOf( "5 ")> =0)
{
continue;
}
else if(s.indexOf( "6 ")> =0)
{
continue;
}
else if(s.indexOf( "7 ")> =0)
{
continue;
}
else if(s.indexOf( "8 ")> =0)
{
continue;
}
else if(s.indexOf( "9 ")> =0)
{
continue;
}
else if(s.indexOf( "0 ")> =0)
{
continue;
}
else
{
count ++;
out.write(s,0,s.length());
}
}
System.out.println( "find : " + count);
out.close();
}
}
[解决办法]
程序是别人的,借花献佛一下
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
public class Test
{
public static void main(String[] args) throws Exception
{
String[] array = new String[] { "1 ", "2 ", "3 "};
listAll(Arrays.asList(array), " ");
}
public static void listAll(List candidate, String prefix)
{
if (prefix.length() == 3)
{
System.out.println(prefix);
}
for (int i = 0; i < candidate.size(); i++)
{
List temp = new LinkedList(candidate);
listAll(temp, prefix + temp.remove(i));
}
}
}
以3位为例,设待取元素列表为candidate,欲显示String为prefix
先遍历从candidate取数,加于prefix, 则candidate少了一位,prefix多了一位
,如此循环递归,终为所取。
[解决办法]
帮顶
题目的目的是要输出几个数的排列组合数,然后各个组合数的第四位不要吗?
[解决办法]
ret+=s[i];
getOne(ret, pos+1);
ret=ret.substring(0, pos-1);
控制逻辑在这,如果你想对某些位进行特殊的处理,在这里进行
你可以画出每次函数的调用诡计,知道它内部的原理,就可以任意修改了。
[解决办法]
学习!~~~
[解决办法]
学习
[解决办法]
楼主,描述一下需求!
还有,楼上借花的代码原来是我写的,但是没有看懂
if (prefix.length() == 3)
{
System.out.println(prefix);
}
这段代码的目的
这个程序的原来是回答lz的另一个帖子的:
http://community.csdn.net/Expert/TopicView.asp?id=5265197
那个是排列的问题。这里lz又是要什么呢?