算法题: 给定一个字符串,里面用空格分开为6个或者更多的子单元,如:01 02 03 04 05 06 07 08... 写一函数,返回任6个进行组合的所有字符串。(java)
public string[] ToSingle(string Number) //格式 01 02 03 04 05 06 07
{
} 输出的字符串数组示例:
01 02 03 04 05 06
01 02 03 04 05 07
01 02 03 05 06 07
01 02 04 05 06 07
01 03 04 05 06 07
02 03 04 05 06 07
......
有会做的请帮忙解答一下,加上注释,最好把思路写清楚,谢谢...
public string[] ToSingle(string Number) //格式 01 02 03 04 05 06 07
{
} 输出的字符串数组示例:
01 02 03 04 05 06
01 02 03 04 05 07
01 02 03 05 06 07
01 02 04 05 06 07
01 03 04 05 06 07
02 03 04 05 06 07
......
有会做的请帮忙解答一下,加上注释,最好把思路写清楚,谢谢...
解决方案 »
- 这个问题有点难(关于线程的事件通知模型)。。对windows底层了解的朋友来看看。
- 关于validateRequest="false"
- CMD中用aspnet_compiler发布website 路径有空格怎么办?
- 如何在asp.net中访问其他机器上的文件
- 解决问题,即刻结帖!!!
- 求一个正则表达式
- 请路过看看!!!!!!!!!!!!!!!!1
- ASP.NET 读取JSON 哪种JSON库更好?
- 关于数据控件的问题!!快速给分!!
- c#导出excel后编辑提示改xls可能含有与网页不兼容的功能,并且保存后会有一个含有网页的文件夹,如何在导出excel的时候设置?
- 纯html网站,被攻击和挂马的可能性大么
- 未能映射路径“/uploadfile/IndexImage/2009923232478_11716.jpg
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.StringTokenizer;public class TestString { /**
* 算法题: 给定一个字符串,里面用空格分开为6个或者更多的子单元,
* 如:01 02 03 04 05 06 07 08... 写一函数,
* 返回任6个进行组合的所有字符串。
* 输出的字符串数组示例:
01 02 03 04 05 06
01 02 03 04 05 07
01 02 03 05 06 07
01 02 04 05 06 07
01 03 04 05 06 07
02 03 04 05 06 07
*/
private static int a[][];
private final int COUNT=6;//单元个数
private int n=0;
private Set set=new HashSet();
private List<String> list=new ArrayList<String>();
public static void main(String[] args) {
String number="01 02 03 04 05 06 07 08 09 10";
TestString ts=new TestString();
ts.ToSingle(number);
//ToSingle(number);
}
public void ToSingle(String number)
{
number=number+" ";
StringTokenizer tokenizer=new StringTokenizer(number," ");
while(tokenizer.hasMoreTokens())
{
String str=tokenizer.nextToken();
list.add(str);
}
n=list.size();
//构造一个有向图
a = new int[n][n];
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(i<j)
{
a[i][j]=1;
}else{
a[i][j]=0;
}
System.out.print(a[i][j]);
}
System.out.println();
}
for (int i =0;i<n-5; i++)
{
depthFirstSearch(i,"",0);
System.out.println(i);
} //打印结果.
Iterator it = set.iterator();
while (it.hasNext())
{
String str= (String) it.next();
System.out.println(str); }
System.out.println("一共有:"+set.size()+"个组合");
}
/*******图的深度遍历算法*******/
private void depthFirstSearch(int startIndex,String result,int count) {
result =result.trim() +" "+ list.get(startIndex);
count++;
if (count==6) {
//如果字符串长度等于COUNT*3-1则添加到set
set.add(result);
}
for(int j=startIndex;j<n; j++){
if (a[startIndex][j]==1)
{
depthFirstSearch(j,result,count);
} else {
continue;
}
}
result = result.substring(0,result.length()-1);
}
}