初学者,求一个0~9之间,算24点的方法。 如题,最好有详细代码,麻烦大家了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 sixme(子曾经曰过:“基础和算法才素王道”。) :你写写看。我看你有长进没有~ import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;public class game24 implements ActionListener{ JTextField num1; JTextField num2; JTextField num3; JTextField num4; JLabel string1; JLabel string2; JLabel string3; JLabel string4; JButton button; JLabel label; JPanel panel; int[] store; public static void main(String[] args){ JFrame frame=new JFrame("算24点"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(new FlowLayout()); game24 mygame=new game24(); mygame.num1=new JTextField(12); mygame.num2=new JTextField(12); mygame.num3=new JTextField(12); mygame.num4=new JTextField(12); mygame.string1=new JLabel("数字1:"); mygame.string2=new JLabel("数字2:"); mygame.string3=new JLabel("数字3:"); mygame.string4=new JLabel("数字4:"); mygame.button=new JButton("计算"); mygame.label=new JLabel(); mygame.panel=new JPanel(); mygame.button.addActionListener(mygame); frame.add(mygame.string1); frame.add(mygame.num1); frame.add(mygame.string2); frame.add(mygame.num2); frame.add(mygame.string3); frame.add(mygame.num3); frame.add(mygame.string4); frame.add(mygame.num4); mygame.panel.setLayout(new GridLayout(2,1)); mygame.panel.add(mygame.button); mygame.panel.add(mygame.label); frame.add(mygame.panel); //frame.add(mygame.button); //frame.add(mygame.label); mygame.store=new int[4]; frame.setSize(200,220); frame.setVisible(true); } public void actionPerformed(ActionEvent e){ Double[] a=new Double[4]; a[0]=Double.valueOf(num1.getText()); a[1]=Double.valueOf(num2.getText()); a[2]=Double.valueOf(num3.getText()); a[3]=Double.valueOf(num4.getText()); if(!result(a)){ label.setText("无解"); label.validate(); } //System.out.println(Integer.valueOf(num1.getText())); } public boolean result(Double a[]){ Double[] b=new Double[4]; for(int i=0;i<4;i++){ for(int j=0;j<4;j++){ for(int k=0;k<4;k++){ if(i==j||k==i||k==j){ continue; } b[0]=a[i]; b[1]=a[j]; b[2]=a[k]; b[3]=a[6-i-j-k]; if(four(b)){ showresult(b,store); return true; } } } } return false; } public boolean four(Double[] a){ Double[] b1=two(a[0],a[1]); Double[] b2=two(a[2],a[3]); //(a+b)+(c+d) for(int i=0;i<4;i++){ for(int j=0;j<4;j++){ Double[] b3=two(b1[i],b2[j]); for(int k=0;k<4;k++){ //if(b3[k]==24.0){ if(Math.abs(b3[k]-24)<Math.exp(-6)){ store[0]=1; store[1]=i; store[2]=k; store[3]=j; return true; } } } } //((a+b)+c)+d for(int i=0;i<4;i++){ Double[] b4=two(b1[i],a[2]); for(int j=0;j<4;j++){ Double[] b5=two(b4[j],a[3]); for(int k=0;k<4;k++){ //if(b5[k]==24.0){ if(Math.abs(b5[k]-24)<Math.exp(-6)){ store[0]=2; store[1]=i; store[2]=j; store[3]=k; return true; } } } } //(a+(b+c))+d Double[] b6=two(a[1],a[2]); for(int i=0;i<4;i++){ Double[] b3=two(a[0],b6[i]); for(int j=0;j<4;j++){ Double[] b4=two(b3[j],a[3]); for(int k=0;k<4;k++){ if(Math.abs(b4[k]-24)<Math.exp(-6)){ store[0]=3; store[1]=j; store[2]=i; store[3]=k; return true; } } } } //a+((b+c)+d) for(int i=0;i<4;i++){ Double[] b3=two(b6[i],a[3]); for(int j=0;j<4;j++){ Double[] b4=two(a[0],b3[j]); for(int k=0;k<4;k++){ if(Math.abs(b4[k]-24)<Math.exp(-6)){ store[0]=4; store[1]=k; store[2]=i; store[3]=j; return true; } } } } //a+(b+(c+d)) for(int i=0;i<4;i++){ Double[] b3=two(a[1],b2[i]); for(int j=0;j<4;j++){ Double[] b4=two(a[0],b3[j]); for(int k=0;k<4;k++){ if(Math.abs(b4[k]-24)<Math.exp(-6)){ store[0]=5; store[1]=k; store[2]=j; store[3]=i; return true; } } } } return false; } public Double[] two(Double a,Double b){ Double[] c=new Double[4]; c[0]=a+b; c[1]=a-b; c[2]=a*b; if(b==0){ b=-1000.0; } c[3]=a/b; return c; } public void showresult(Double paramnum[],int operation[]){ int[] num=new int[4]; for(int i=0;i<4;i++){ num[i]=paramnum[i].intValue(); } String[] stringopration=new String[3]; for(int i=0;i<3;i++){ if(operation[i+1]==0)stringopration[i]="+"; if(operation[i+1]==1)stringopration[i]="-"; if(operation[i+1]==2)stringopration[i]="*"; if(operation[i+1]==3)stringopration[i]="/"; } String text=new String(); if(operation[0]==1){//(a+b)+(c+d) text="("+String.valueOf(num[0])+stringopration[0]+String.valueOf(num[1])+")"+stringopration[1]+"("+String.valueOf(num[2])+stringopration[2]+String.valueOf(num[3])+")=24"; }else if(operation[0]==2){//((a+b)+c)+d text="(("+String.valueOf(num[0])+stringopration[0]+String.valueOf(num[1])+")"+stringopration[1]+String.valueOf(num[2])+")"+stringopration[2]+String.valueOf(num[3])+"=24"; }else if(operation[0]==3){//(a+(b+c))+d text="("+String.valueOf(num[0])+stringopration[0]+"("+String.valueOf(num[1])+stringopration[1]+String.valueOf(num[2])+"))"+stringopration[2]+String.valueOf(num[3])+"=24"; }else if(operation[0]==4){//a+((b+c)+d) text=String.valueOf(num[0])+stringopration[0]+"(("+String.valueOf(num[1])+stringopration[1]+String.valueOf(num[2])+")"+stringopration[2]+String.valueOf(num[3])+")=24"; }else if(operation[0]==5){//a+(b+(c+d)) text=String.valueOf(num[0])+stringopration[0]+"("+String.valueOf(num[1])+stringopration[1]+"("+String.valueOf(num[2])+stringopration[2]+String.valueOf(num[3])+"))=24"; } System.out.println(text); label.setText(text); label.validate(); /*System.out.println(operation[0]); System.out.print(num[0]); for(int i=1;i<4;i++){ if(operation[i]==0)System.out.print("+"); if(operation[i]==1)System.out.print("-"); if(operation[i]==2)System.out.print("*"); if(operation[i]==3)System.out.print("/"); System.out.print(num[i]); }*/ }};jdk1.5 linux下,从sql数据库取数据破折号为乱码 问一个有挑战性的SQL问题 JAVA中的一点疑问 oracle驱动 泛型不会用啊!请指教一下! jxl生成的EXCEL只支持256列,我要生成更多的列怎么办? 求平均值 菜鸟问题:对于float型的变量,如何对其保留小数点后二位有效数字,并对第三位进行四舍五入操作? java.lang.OutOfMemeoyError applet中socket连接服务器serversocket对象?? 各位csdn上的高手哪个有联通的spip网关的源代码呀,用java写的,如果没有可以进来知道一下吗 这个配置用jbuilder2006会不会很慢
你写写看。
我看你有长进没有~
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class game24 implements ActionListener
{
JTextField num1;
JTextField num2;
JTextField num3;
JTextField num4;
JLabel string1;
JLabel string2;
JLabel string3;
JLabel string4;
JButton button;
JLabel label;
JPanel panel;
int[] store; public static void main(String[] args){
JFrame frame=new JFrame("算24点");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new FlowLayout()); game24 mygame=new game24();
mygame.num1=new JTextField(12);
mygame.num2=new JTextField(12);
mygame.num3=new JTextField(12);
mygame.num4=new JTextField(12);
mygame.string1=new JLabel("数字1:");
mygame.string2=new JLabel("数字2:");
mygame.string3=new JLabel("数字3:");
mygame.string4=new JLabel("数字4:");
mygame.button=new JButton("计算");
mygame.label=new JLabel();
mygame.panel=new JPanel();
mygame.button.addActionListener(mygame); frame.add(mygame.string1);
frame.add(mygame.num1);
frame.add(mygame.string2);
frame.add(mygame.num2);
frame.add(mygame.string3);
frame.add(mygame.num3);
frame.add(mygame.string4);
frame.add(mygame.num4);
mygame.panel.setLayout(new GridLayout(2,1));
mygame.panel.add(mygame.button);
mygame.panel.add(mygame.label);
frame.add(mygame.panel);
//frame.add(mygame.button);
//frame.add(mygame.label); mygame.store=new int[4]; frame.setSize(200,220);
frame.setVisible(true);
} public void actionPerformed(ActionEvent e){
Double[] a=new Double[4];
a[0]=Double.valueOf(num1.getText());
a[1]=Double.valueOf(num2.getText());
a[2]=Double.valueOf(num3.getText());
a[3]=Double.valueOf(num4.getText());
if(!result(a)){
label.setText("无解");
label.validate();
}
//System.out.println(Integer.valueOf(num1.getText()));
} public boolean result(Double a[]){
Double[] b=new Double[4];
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
for(int k=0;k<4;k++){
if(i==j||k==i||k==j){
continue;
}
b[0]=a[i];
b[1]=a[j];
b[2]=a[k];
b[3]=a[6-i-j-k];
if(four(b)){
showresult(b,store);
return true;
}
}
}
}
return false;
} public boolean four(Double[] a){
Double[] b1=two(a[0],a[1]);
Double[] b2=two(a[2],a[3]);
//(a+b)+(c+d)
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
Double[] b3=two(b1[i],b2[j]);
for(int k=0;k<4;k++){
//if(b3[k]==24.0){
if(Math.abs(b3[k]-24)<Math.exp(-6)){
store[0]=1;
store[1]=i;
store[2]=k;
store[3]=j;
return true;
}
}
}
}
//((a+b)+c)+d
for(int i=0;i<4;i++){
Double[] b4=two(b1[i],a[2]);
for(int j=0;j<4;j++){
Double[] b5=two(b4[j],a[3]);
for(int k=0;k<4;k++){
//if(b5[k]==24.0){
if(Math.abs(b5[k]-24)<Math.exp(-6)){
store[0]=2;
store[1]=i;
store[2]=j;
store[3]=k;
return true;
}
}
}
}
//(a+(b+c))+d
Double[] b6=two(a[1],a[2]);
for(int i=0;i<4;i++){
Double[] b3=two(a[0],b6[i]);
for(int j=0;j<4;j++){
Double[] b4=two(b3[j],a[3]);
for(int k=0;k<4;k++){
if(Math.abs(b4[k]-24)<Math.exp(-6)){
store[0]=3;
store[1]=j;
store[2]=i;
store[3]=k;
return true;
}
}
}
}
//a+((b+c)+d)
for(int i=0;i<4;i++){
Double[] b3=two(b6[i],a[3]);
for(int j=0;j<4;j++){
Double[] b4=two(a[0],b3[j]);
for(int k=0;k<4;k++){
if(Math.abs(b4[k]-24)<Math.exp(-6)){
store[0]=4;
store[1]=k;
store[2]=i;
store[3]=j;
return true;
}
}
}
}
//a+(b+(c+d))
for(int i=0;i<4;i++){
Double[] b3=two(a[1],b2[i]);
for(int j=0;j<4;j++){
Double[] b4=two(a[0],b3[j]);
for(int k=0;k<4;k++){
if(Math.abs(b4[k]-24)<Math.exp(-6)){
store[0]=5;
store[1]=k;
store[2]=j;
store[3]=i;
return true;
}
}
}
}
return false;
} public Double[] two(Double a,Double b){
Double[] c=new Double[4];
c[0]=a+b;
c[1]=a-b;
c[2]=a*b;
if(b==0){
b=-1000.0;
}
c[3]=a/b;
return c;
} public void showresult(Double paramnum[],int operation[]){
int[] num=new int[4];
for(int i=0;i<4;i++){
num[i]=paramnum[i].intValue();
} String[] stringopration=new String[3];
for(int i=0;i<3;i++){
if(operation[i+1]==0)stringopration[i]="+";
if(operation[i+1]==1)stringopration[i]="-";
if(operation[i+1]==2)stringopration[i]="*";
if(operation[i+1]==3)stringopration[i]="/";
}
String text=new String();
if(operation[0]==1){//(a+b)+(c+d)
text="("+String.valueOf(num[0])+stringopration[0]+String.valueOf(num[1])+")"+stringopration[1]+"("+String.valueOf(num[2])+stringopration[2]+String.valueOf(num[3])+")=24";
}else if(operation[0]==2){//((a+b)+c)+d
text="(("+String.valueOf(num[0])+stringopration[0]+String.valueOf(num[1])+")"+stringopration[1]+String.valueOf(num[2])+")"+stringopration[2]+String.valueOf(num[3])+"=24";
}else if(operation[0]==3){//(a+(b+c))+d
text="("+String.valueOf(num[0])+stringopration[0]+"("+String.valueOf(num[1])+stringopration[1]+String.valueOf(num[2])+"))"+stringopration[2]+String.valueOf(num[3])+"=24";
}else if(operation[0]==4){//a+((b+c)+d)
text=String.valueOf(num[0])+stringopration[0]+"(("+String.valueOf(num[1])+stringopration[1]+String.valueOf(num[2])+")"+stringopration[2]+String.valueOf(num[3])+")=24";
}else if(operation[0]==5){//a+(b+(c+d))
text=String.valueOf(num[0])+stringopration[0]+"("+String.valueOf(num[1])+stringopration[1]+"("+String.valueOf(num[2])+stringopration[2]+String.valueOf(num[3])+"))=24";
} System.out.println(text);
label.setText(text);
label.validate();
/*System.out.println(operation[0]);
System.out.print(num[0]);
for(int i=1;i<4;i++){
if(operation[i]==0)System.out.print("+");
if(operation[i]==1)System.out.print("-");
if(operation[i]==2)System.out.print("*");
if(operation[i]==3)System.out.print("/");
System.out.print(num[i]);
}*/
}
};jdk1.5