//从键盘读入一个由字母构成的串(不大于30个字符)。
//
//从该串中取出3个不重复的字符,求所有的取法。
//
//取出的字符,要求按字母升序排列成一个串。
//
//不同的取法输出顺序可以不考虑。
//
//例如:
//输入:
//abc
//则输出:
//abc
//
//输入:
//abcd
//则输出:
//abc
//abd
//acd
//bcd
//
//输入:
//abcaa
//则输出:
//abc
/*
* 首先去掉用户输入的重复的 , 然后就是对剩下的字符进行排列
*
* */
package 高职2011决赛真题;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Scanner;
public class Title3 {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
String a = input.nextLine();
/* 获取新得到的字符 */
String newX = repair(a);
/* 对剩下的字符进行排列 */
range(newX);
/* 进行数据显示 */
print(newX, range(newX));
}
/* 去掉重复的 */
public static String repair(String a){
String x = "";
for(int i=0;i<a.length();i++){
String temp = String.valueOf(a.charAt(i));
if(!x.contains(temp)){
x = x+temp;
}
}
return x;
}
/* 对字符串进行取字符 , range */
public static ArrayList<String> range(String x){
// a d b c s e
// 1 1 1 0 0 0
// 1 1 1 1 1 1
// 1 0 表示提取与不提取,
ArrayList<String> list = new ArrayList<String>();
for(int i=0;i<=Math.pow(2, x.length());i++){
BigInteger a = BigInteger.valueOf((long)i);
String newX = a.toString(2);
int count = 0;
for(int j=0;j<newX.length();j++){
if(newX.charAt(j) == '1'){
count++;
}
}
/* 不满足三个值的时候结束本次循环 */
if(count==3){
if(newX.length()!=x.length()){
for(;;){
if(newX.length()==x.length()){
break;
}
newX="0"+newX;
}
}
/* 保存符合条件的 */
if(!list.contains(newX)){
list.add(newX);
}
}
}
return list;
}
/* 打印输出进行显示 */
public static void print(String x,ArrayList<String> list){
// 保存为字节数组
char[] arr = x.toCharArray();
for(int i=0;i<list.size();i++){
String temp = list.get(i);
String result = "";
for(int k=0;k<temp.length();k++){
if(temp.charAt(k)=='1'){
//K 的下标对应了
result+=arr[k];
}
}
System.out.println(result);
}
}
}
分享到:
相关推荐
可以转换各种进制的数据。 这是很多年前碰到的一个题目的另类解法,列出X位内所有的2进制数。
二进制数据二进制数据二进制数据二进制数据二进制数据二进制数据二进制数据二进制数据二进制数据二进制数据二进制数据二进制数据二进制数据二进制数据二进制数据
使用二进制PSO解决0-1背包问题的matlab程序
与仅显示文件的原始十六进制字节(1)的传统十六进制编辑器不同,010 Editor还可以使用二进制模板(2)将文件解析为分层结构。运行二进制模板的结果比仅使用原始十六进制字节更容易理解和编辑。 二进制模板易于编写...
解决SU二进制文件过旧的问题 superuser_update.zip
c#读取二进制文件c#读取二进制文件c#读取二进制文件c#读取二进制文件c#读取二进制文件c#读取二进制文件
二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具二进制工具...
由于二进制数在C#中无法直接表示,所以所有二进制数都用一个字符串来表示 例如: 二进制: 1010 表示为 字符串:”1010″ int d = 10; //十进制转二进制字符串 Console.WriteLine(Convert.ToString(d,2)); //...
模拟十进制数到二进制数的转换过程,以LED来模拟各个二进制位,并能以动画方式模拟计数的过程。 选择手动方式时,将8个LED变成滑动条中数字的二进制(基数2)表示。例如,如果滑动条设置为数字10(在二进制中表示为...
主要介绍了JavaScript读二进制文件并用ajax传输二进制流的方法的相关资料,需要的朋友可以参考下
文件下载,二进制流转换成文件 解决中文名乱码的问题
人工智能作业,使用二进制编码的遗传进化算法解决TSP问题。
本文实例讲述了C#实现把图片转换成二进制以及把二进制转换成图片的方法。分享给大家供大家参考,具体如下: private void button1_Click(object sender, EventArgs e) { string path = this.textBox1.Text; byte...
MariaDB是MySQL的二进制替代品MariaDB是同一MySQL版本的二进制替代品(例如MySQL 5.1->MariaDB 5.1, MariaDB5.
十进制转二进制的方法与二进制转十进制的方法及八进制十六进制
读取二进制文件读取二进制文件读取二进制文件读取二进制文件读取二进制文件读取二进制文件读取二进制文件
解决labview字符串转换功能不足,将二进制字符串转变为十进制字符串。
Binary Viewer二进制文件读取软件,可读取二进制的语音数据,图像数据,从而分析音频或者图像存储的二进制信息
本Demo是基于VS2010的c++的实现文件转二进制,二进制转文件工程。代码中是通过png图片作为文件,同理可用于有其他类型的文件。