📄 suan24.java
字号:
//大家都玩过的24点牌的算法,提供了详细的算法。大家可以使用
//大家都玩过的24点牌的算法,提供了详细的算法。大家可以使用
//大家都玩过的24点牌的算法,提供了详细的算法。大家可以使用
//大家都玩过的24点牌的算法,提供了详细的算法。大家可以使用
import java.util.*;
public class Suan24
{
private static HashSet<String>vs_r=new HashSet<String>();
private static String gc(double n)
{
String s=""+n;
StringBuffer t=new StringBuffer(s);
for(int i=t.length()-1;i>=0;i--)
if(t.charAt(i)=='0')
t.setCharAt(i,' ');
s=t.toString();
s=s.trim();
if(s.charAt(s.length()-1)=='.')
return s.substring(0,s.length()-1);
return s;
}
private static void f(LinkedList<Double>vi,LinkedList<String>vs)
{
if(vi.size()==1)
if(vi.get(0)==24)
{
String t=vs.get(0);
t=t.substring(1,t.length()-1);
t+="=24";
vs_r.add(new String(t));
return;
}
else return;
for(int i=0;i<vi.size();i++)
for(int j=0;j<vi.size();j++)
{
if(i==j)continue;
LinkedList<Double>vit=new LinkedList<Double>();
LinkedList<String>vst=new LinkedList<String>();
String s="";
for(int k=0;k<vi.size();k++)
if(k!=i&&k!=j)
{
vit.addLast(vi.get(k));
vst.addLast(new String(vs.get(k)));
}
vit.addLast(vi.get(i)+vi.get(j));
s="("+vs.get(i)+"+"+vs.get(j)+")";
vst.addLast(new String(s));
f(vit,vst);
vst.removeLast();
vit.removeLast();
vit.addLast(vi.get(i)-vi.get(j));
s="("+vs.get(i)+"-"+vs.get(j)+")";
vst.addLast(new String(s));
f(vit,vst);
vst.removeLast();
vit.removeLast();
vit.addLast(vi.get(i)*vi.get(j));
s="("+vs.get(i)+"*"+vs.get(j)+")";
vst.addLast(new String(s));
f(vit,vst);
vst.removeLast();
vit.removeLast();
if(vi.get(j)!=0)
{
vit.addLast(vi.get(i)/vi.get(j));
s="("+vs.get(i)+"/"+vs.get(j)+")";
vst.addLast(new String(s));
f(vit,vst);
vst.removeLast();
vit.removeLast();
}
}
}
public static void main(String [] args)
{
Double a,b,c,d;
System.out.println("please input four numbers:");
Scanner cin=new Scanner(System.in);
a=cin.nextDouble();b=cin.nextDouble();c=cin.nextDouble();d=cin.nextDouble();
LinkedList<Double>vi=new LinkedList<Double>();
LinkedList<String>vs=new LinkedList<String>();
vi.add(a);vs.add(gc(a));
vi.add(b);vs.add(gc(b));
vi.add(c);vs.add(gc(c));
vi.add(d);vs.add(gc(d));
f(vi,vs);
if(vs_r.size()>0)
{
Iterator it=vs_r.iterator();
while(it.hasNext())
System.out.println(it.next());
}
else
System.out.println("sorry the four numbers can't be done");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -