我先开个头,这是我收藏的一个关于字符串全排序的问题
public class AllSort {
private Set set = new HashSet(); //保证相同的字符串只出现一次!
public static void main(String[] args) {
String s ="erye";//因为全排序字符串个数是长度的阶乘,这里就不写长字符串,不然个数可以而知
char[] buf=s.toCharArray();
AllSort as = new AllSort();
as.perm(buf,0,buf.length-1);
System.out.println(as.set);
}
public void perm(char[] buf,int start,int end){
if(start==end){//当只要求对数组中一个字母进行全排列时,只要就按该数组输出即可
String str="";
for(int i=0;i<=end;i++){
//System.out.print(buf[i]);
str+=buf[i];
}
set.add(str);
//System.out.println();
}
else{//多个字母全排列
for(int i=start;i<=end;i++){
char temp=buf[start];//交换数组第一个元素与后续的元素
buf[start]=buf[i];
buf[i]=temp;
//printArray(buf);
perm(buf,start+1,end);//后续元素递归全排列
temp=buf[start];//将交换后的数组还原
buf[start]=buf[i];
buf[i]=temp;
//printArray(buf);
}
}
}
// public static void printArray (char[] charArray){
// System.out.print("Now the array includes: ");
// for (int i=0; i<charArray.length; i++){
// System.out.print(charArray[i]);
// }
// System.out.println("");
// }
}
public class AllSort {
private Set set = new HashSet(); //保证相同的字符串只出现一次!
public static void main(String[] args) {
String s ="erye";//因为全排序字符串个数是长度的阶乘,这里就不写长字符串,不然个数可以而知
char[] buf=s.toCharArray();
AllSort as = new AllSort();
as.perm(buf,0,buf.length-1);
System.out.println(as.set);
}
public void perm(char[] buf,int start,int end){
if(start==end){//当只要求对数组中一个字母进行全排列时,只要就按该数组输出即可
String str="";
for(int i=0;i<=end;i++){
//System.out.print(buf[i]);
str+=buf[i];
}
set.add(str);
//System.out.println();
}
else{//多个字母全排列
for(int i=start;i<=end;i++){
char temp=buf[start];//交换数组第一个元素与后续的元素
buf[start]=buf[i];
buf[i]=temp;
//printArray(buf);
perm(buf,start+1,end);//后续元素递归全排列
temp=buf[start];//将交换后的数组还原
buf[start]=buf[i];
buf[i]=temp;
//printArray(buf);
}
}
}
// public static void printArray (char[] charArray){
// System.out.print("Now the array includes: ");
// for (int i=0; i<charArray.length; i++){
// System.out.print(charArray[i]);
// }
// System.out.println("");
// }
}
Hehe I sent it to u...
JF...Happy Mid-Autumn Day!!!
/**
* 取得指定月份的第一天
*
* @param strdate String
* @return String
*/
public String getMonthBegin(String strdate)
{
java.util.Date date = parseFormatDate(strdate);
return formatDateByFormat(date,"yyyy-MM") + "-01";
}/**
* 取得指定月份的最后一天
*
* @param strdate String
* @return String
*/
public String getMonthEnd(String strdate)
{
java.util.Date date = parseFormatDate(getMonthBegin(strdate));
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MONTH,1);
calendar.add(Calendar.DAY_OF_YEAR, -1);
return formatDate(calendar.getTime());
}
* 格式化输出日期
*
* @param date
* 日期
* @param format
* 格式
* @return 返回字符型日期
*/
public static String format(java.util.Date date, String format) {
String result = "";
try {
if (date != null) {
java.text.DateFormat df = new java.text.SimpleDateFormat(format);
result = df.format(date);
}
} catch (Exception e) {
}
return result;
}public static String format(java.util.Date date) {
return format(date, "yyyy/MM/dd");
}
public java.util.Date parseFormatDate(String strDate)
{
java.util.Date date = null;
if(strDate.indexOf("-") > 0)
{
date = parseFormatDateBy(strDate,"-");
}
else
{
if(strDate.indexOf(".") > 0)
{
date = parseFormatDateBy(strDate,".");
}
else
{
logger.info("date 格式不对:" + date);
}
}
return date;
}
public java.util.Date parseFormatDateBy(String strDate,String division)
{
java.util.Date date = null;
try
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy" + division + "MM" + division + "dd");
date = sdf.parse(strDate);
}
catch(Exception ex)
{
ex.printStackTrace();
}
return date;
}
public static void main(String[] args) {
double n1 = pow(2, 6);
double n2 = pow(2, -6);
System.out.println(n1);
System.out.println(n2);
} public static double pow(double base, int exponent) {
if (exponent < 0)
return 1 / pow(base, -exponent);
double power = 1;
while(exponent > 0) {
if((exponent & 1) == 1) {
power *= base;
}
base *= base;
exponent >>= 1;
}
return power;
}
}
public void print1(int num){ //星星包围一个菱形空格
int n;
n= 2 * num +1; //总的列数或行数
for(int i = 1,j = 1;j <= n;i++){ //j 行 i 列
int m = Math.abs(num + 1 - j); //每行的一部分星
if(m + 1< i && i < n - m) //计算的出每行的前半部分的星和所有空格所占的位置数减去前半部分的星
System.out.print(" ");
else
System.out.print("*");
if(i == n){ //当列数i到达n列,该换行了
System.out.println();
i = 0; //这时i赋值为0,一会i回到for后面下括弧的i++里,重新得到i=1;
j++;
}
}
}
public static void main(String[] args){
LoopFor11 lp = new LoopFor11();
lp.print1(4);
}结果是这样子的:
*********
**** ****
*** ***
** **
* *
** **
*** ***
**** ****
*********
应该这样子的
一个for循环做成这样子的
*********
**** ****
*** ***
** **
* *
** **
*** ***
**** ****
*********
代码或者图都用回复框上面工具栏中的第七个(“#”图标)点 Java 就行了*********
**** ****
*** ***
** **
* *
** **
*** ***
**** ****
*********
import javax.swing.JOptionPane; public class Hanoi { private static final String DISK_B = "diskB"; private static final String DISK_C = "diskC"; private static final String DISK_A = "diskA"; static String from=DISK_A; static String to=DISK_C; static String mid=DISK_B; public static void main(String[] args) { String input=JOptionPane.showInputDialog("please input the number of the disks you want me move."); int num=Integer.parseInt(input); move(num,from,mid,to); } private static void move(int num, String from2, String mid2, String to2) { if(num==1){ System.out.println("move disk 1 from "+from2+" to "+to2); } else { move(num-1,from2,to2,mid2); System.out.println("move disk "+num+" from "+from2+" to "+to2); move(num-1,mid2,from2,to2); } } }
{
java.util.Date date = parseFormatDate(getMonthBegin(strdate));
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MONTH,1);
calendar.add(Calendar.DAY_OF_YEAR, -1);
return formatDate(calendar.getTime());
}
public class TestBeibao{
int out_n=8;
int p[] = new int[100];
void cal(int m,int n){
if(m<1 ||n<1||(n==1&&m!=1))
return ;
if(m==n){
p[n]= 1;
for(int i=1;i<=out_n;i++){
if(p[i]==1)
System.out.print(" "+i);
}
System.out.print("\n");
p[n]=0;
}
cal(m,n-1);
p[n]=1;
cal(m-n,n-1);
p[n]=0;
}
public static void main(String [] args){
int m=10,n=8;
TestBeibao t = new TestBeibao();
t.cal(m, n);
}
}
private Set set = new HashSet(); 请问这一句要先引用什么类吗?我编译通不过.
public class QuanPaiLei { public static int MAX = 4; public static boolean state[] = new boolean[MAX + 1]; public static int item[] = new int[MAX + 1]; public static String element[] = { "a", "b", "c","d" }; public static void main(String[] args) {
DoPermutation(1);
} public static void DoPermutation(int pos) {
if (pos > MAX) {
for (int j = 1; j <= MAX; j++)
System.out.print(element[item[j] - 1]);
System.out.println();
return;
}
for (int i = 1; i <= MAX; i++) {
if (!state[i]) {
state[i] = true;
item[pos] = i;
DoPermutation(pos + 1);
state[i] = false;
}
}
}
}
这个算法 说实在我感觉比较 精妙
{
public static String getResult(String text)
{
String result=null; if(text.indexOf("(")==-1)
{
String[] tookens=text.split("[+-[*]/]");
if(tookens.length==2)
{
result=compute(text);
}
else
{
StringBuffer fuhao=new StringBuffer();
for(char ch:text.toCharArray())
{
if(ch>'9'||ch<'0')
{
fuhao.append(ch);
}
}
if(fuhao.indexOf("*")!=-1||fuhao.indexOf("/")!=-1)
{
int ind1=fuhao.indexOf("*");
int ind2=fuhao.indexOf("/");
int ind=ind2;
if(ind1!=-1)
{
if(ind2!=-1)
{
ind=ind1>ind2?ind2:ind1;
}
else
{
ind=ind1;
}
}
else if(ind1==-1)
{
ind=ind2;
}
String tmp=tookens[ind]+fuhao.charAt(ind)+tookens[ind+1];
String rs=compute(tmp);
result=getResult(text.replace(tmp,rs));
}
else
{
String tmp=tookens[0]+fuhao.charAt(0)+tookens[1];
String rs=compute(tmp);
result=getResult(text.replace(tmp,rs));
}
}
}
else
{
String subtext=text.substring(0,text.indexOf(")"));
String tmptext=subtext.substring(subtext.lastIndexOf("(")+1);
String str="("+tmptext+")";
String tmpstring=getResult(tmptext);
if(tmpstring.startsWith("-"))
{
if(text.charAt(text.indexOf(str)-1)=='-')
{
tmpstring=tmpstring.replace('-','+');
str="-"+str;
}
}
result=getResult(text.replace(str,tmpstring));
}
return result;
}
private static String compute(String text)
{
String result=""; if(text.indexOf("*")!=-1)
{
String tmp1=text.substring(0,text.indexOf("*"));
String tmp2=text.substring(text.indexOf("*")+1,text.length());
int s1=Integer.valueOf(tmp1).intValue();
int s2=Integer.valueOf(tmp2).intValue();
int r=s1*s2;
result=r+"";
}
else if(text.indexOf("/")!=-1)
{
String tmp1=text.substring(0,text.indexOf("/"));
String tmp2=text.substring(text.indexOf("/")+1,text.length());
int s1=Integer.valueOf(tmp1).intValue();
int s2=Integer.valueOf(tmp2).intValue();
int r=s1/s2;
result=r+"";
}
else if(text.indexOf("+")!=-1)
{
String tmp1=text.substring(0,text.indexOf("+"));
String tmp2=text.substring(text.indexOf("+")+1,text.length());
int s1=Integer.valueOf(tmp1).intValue();
int s2=Integer.valueOf(tmp2).intValue();
int r=s1+s2;
result=r+"";
}
else if(text.indexOf("-")!=-1)
{
String tmp1=text.substring(0,text.indexOf("-"));
String tmp2=text.substring(text.indexOf("-")+1,text.length());
int s1=Integer.valueOf(tmp1).intValue();
int s2=Integer.valueOf(tmp2).intValue();
int r=s1-s2;
result=r+"";
}
return result;
}
}
import java.util.Set;
import java.util.HashSet;