包含java24算法的词条

博主:adminadmin 2022-12-04 18:09:07 69

今天给各位分享java24算法的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java算24点:输入4个数算24点,不要代码,求算法

例如:4个数A、B、C、D,我们可以用F(A,B,C,D)=24来表示。那么。我们就可以把函数F拆解成F1(B,C,D)=P1(24,A)。(意思是:B,C,D之间的四则运算可以得到A和24之间的四则运算结果)。那么F1又可以继续拆解为C和D之间的四则运算关系得到结果后再和B来一次四则运算结果。这样,就可以得到很简单的一个数组6*6*6=216种结果而已。当然,这是A,B,C,D顺序固定的组合,那么把A,B,C,D换个位置,又一种组合。所以,所有的结果有6*6*6*12种。但,我们还是忽略了一种情况:A和B的值与C和D的值再进行四则运算,那么我们还需要再加一组6*6*6就可以了。

Java算24点

public class ershidian {

// int h=0;

// public void aaa(int a[],int c)

// {

// int i=0;

// if(c==0){

// h+= a[i]+a[i+1];

// }else if(c==1){

// h+= a[i]-a[i+1];

// }else if(c==2){

// h+= a[i]*a[i+1];

// }else{

// h+= a[i]/a[i+1];

// }

// i++;

// System.out.println(h);

// }

public void kaka(int a[]){

int hi[]=new int[4];

int hj[]=new int[16];

int hf[]=new int[64];

// int hm[]=new int[4];

// int hm2[]=new int[4];

// int hv[]=new int [16];

int z=0;

int n=0;

// int p=0;

for(int i=0;i4;i++){

if(i==0){

hi[i]=a[0]+a[1];

}else if(i==1){

hi[i]=a[0]-a[1];

}else if(i==2){

hi[i]=a[0]*a[1];

}else if(i==3){

hi[i]=a[0]/a[1];

}

}

for(int j=0;j4;j++){

for(int g=0;g4;g++){

if(g==0){

hj[z]=hi[j]+a[2];

}else if(g==1){

hj[z]=hi[j]-a[2];

}else if(g==2){

hj[z]=hi[j]*a[2];

}else if(g==3){

hj[z]=hi[j]/a[2];

}

z++;

}

}

for(int f=0;f16;f++){

for(int r=0;r4;r++){

if(r==0){

hf[n]=hj[f]+a[3];

}else if(r==1){

hf[n]=hj[f]-a[3];

}else if(r==2){

hf[n]=hj[f]*a[3];

}else if(r==3){

hf[n]=hj[f]/a[3];

}

n++;

}

}

// for(int m=0;m4;m++){

// if(m==0){

// hm[m]=a[0]+a[1];

// hm2[m]=a[2]+a[3];

// }else if(m==1){

// hm[m]=a[0]-a[1];

// hm2[m]=a[2]-a[3];

// }else if(m==2){

// hm[m]=a[0]*a[1];

// hm2[m]=a[2]*a[3];

// }else if(m==3){

// hm[m]=a[0]/a[1];

// hm2[m]=a[2]/a[3];

// }

//

// }

// for(int v=0;v4;v++){

// for(int l=0;l4;l++){

// if(l==0){

// hv[p]=hm[v]+hm2[v];

// }else if(l==1){

// hv[p]=hm[v]-hm2[v];

// }else if(l==2){

// hv[p]=hm[v]*hm2[v];

// }else if(l==3){

// hv[p]=hm[v]/hm2[v];

// }

// System.out.println(hv[p]);

// p++;

//

// }

//

// }

for(int k=0;khf.length;k++){

if(hf[k]==24){

System.out.println(hf[k]);

}

}

}

public static void main(String args[]){

int aa[]={2,5,9,9};

ershidian y=new ershidian();

y.kaka(aa);

}

}

这只能算部分的,全部的还做不出

java程序设计:算24点

//这是我自己写的,在VC里可以运行。

#include "stdafx.h"

#includestdio.h

#includestdlib.h

static int NUMBER;

bool Game24(int const nNum, int* arr, int nLen, int nCount, char* pOperator, bool* pFlag){

if(nCount == 1){

if(*arr == nNum){

printf("((%d %c %d) %c %d) %c %d = %d\n",

arr[0],pOperator[0],arr[1],pOperator[1],arr[2],pOperator[2],arr[3],NUMBER);

if(!(*pFlag)) *pFlag = true;

}

return *pFlag;

}

for(int i = 0; i 4; ++i){

switch(i){

case 0:

pOperator[nCount - 2] = '+';

Game24(nNum - arr[nCount - 1], arr,nLen,nCount - 1,pOperator,pFlag);

break;

case 1:

pOperator[nCount - 2] = '-';

Game24(nNum + arr[nCount - 1], arr,nLen,nCount - 1,pOperator,pFlag);

break;

case 2:

pOperator[nCount - 2] = '*';

if( arr[nCount - 1] !(nNum % arr[nCount - 1]))

Game24(nNum / arr[nCount - 1], arr,nLen,nCount - 1,pOperator,pFlag);

break;

case 3:

pOperator[nCount - 2] = '/';

if(arr[nCount - 1])

Game24(nNum * arr[nCount - 1], arr,nLen,nCount - 1,pOperator,pFlag);

break;

}

}

return *pFlag;

}

int fOperating(char pOpe, int x1, int x2){

switch(pOpe){

case '+': return x1 + x2;

case '-': return x1 - x2;

case '*': return x1 * x2;

case '/': return x1 / x2;

}

}

bool fGame24(int const nNum, int* arr,char* pOperator, bool* pFlag){

int nLeft = 0,nRight = 0;

char pOpe[4] = {'+','-','*','/'};

for(int l = 0; l 4; ++l){

if(l == 3 (!arr[1] || arr[0] % arr[1])) continue;

pOperator[0] = pOpe[l];

nLeft = fOperating(pOpe[l],arr[0],arr[1]);

for(int r = 0; r 4; ++r){

if(r == 3 (!arr[3] || arr[2] % arr[3])) continue;

pOperator[2] = pOpe[r];

nRight = fOperating(pOpe[r],arr[2],arr[3]);

for(int m = 0; m 4; ++m){

if(m == 3 (!nRight || nLeft % nRight)) continue;

pOperator[1] = pOpe[m];

if(fOperating(pOpe[m],nLeft,nRight) == nNum){

printf("(%d %c %d) %c (%d %c %d)  = %d\n",

arr[0],pOperator[0],arr[1],pOperator[1],arr[2],pOperator[2],arr[3],NUMBER);

if(!(*pFlag)) *pFlag = true;

}

}

}

}

return *pFlag;

}

int main(int argc, char* argv[])

{

puts("start!\nPlease input 4 numbers:");

bool* pFlag = (bool*)malloc(1);

*pFlag = false;

bool flag = 0;

int pNum[4] = {0};

int cNum[4] = {0};

int iNum[4] = {0};

char cOpe[3] = {0};

for(int i = 0; i 4; ++i)

scanf("%d",pNum[i]);

puts("So, what number do you want:");

scanf("%d",NUMBER);

puts("************************************");

for(iNum[0] = 0; iNum[0] 4; ++iNum[0]){

for(iNum[1] = 0; iNum[1] 4; ++iNum[1]){

if(iNum[1] == iNum[0]) continue;

for(iNum[2] = 0; iNum[2] 4; ++iNum[2]){

if(iNum[2] == iNum[0] || iNum[2] == iNum[1]) continue;

for(iNum[3] = 0; iNum[3] 4; ++iNum[3]){

if(iNum[3] == iNum[0] || iNum[3] == iNum[1] || iNum[3] == iNum[2]) continue;

for(int i = 0; i 4; ++i) cNum[i] = pNum[iNum[i]];

if(Game24(NUMBER,cNum,4,4,cOpe,pFlag)) flag = true;

if(fGame24(NUMBER,cNum,cOpe,pFlag)) flag = true;

}

}

}

}

free(pFlag);

if(!flag) printf("No way can be found.\n");

puts("************************************\nEnd!");

system("pause");

return 0;

}

Java24点

粗略看了下,至少发现三个BUG:

1.没有考虑int类型相除时是否整除的问题,如3/4在你的算法中直接以零作为计算结果;

2.如果前两个或前三个数计算结果已经为24,则直接输出,没有等到四个全部参与计算;

3.类似n == 24.0这种浮点数的相等判断在绝大多数计算机语言中都是不正确的。

用JAVA如何算出24点?

24点的源代码,因该可以计算出4则运算24 public class Test24Point{ public static void main(String[] args){ int index = 0 ; int temp = 0 ; int totalSUC = 0 ; int numb[] = new int[4];//the first four numbers double num[][] = new double[36][3];//three numbers after calculating double total[] = new double[6];//the number after three steps of calculating double p[][] = new double[6][8]; double q[][] = new double[3][7]; //System.out.println(2465%108); //System.out.println(2465/108); System.out.println("\"a--b\"means\"b-a\""); System.out.println("\"a//b\"means\"b/a\"\n"); /* for(int h = 0; h = 9; h ++)//Get the first four numbers for calculating and store into the array numb[4]; for(int i = 0; i = 9; i ++) for(int j = 0; j = 9; j ++) for(int k = 0; k = 9; k ++){ numb[0] = h ; numb[1] = i ; numb[2] = j ; numb[3] = k ; }*/ for(int i = 0 ; i 4 ; i ++){ numb = Integer.parseInt(args); } for(int i = 0; i 3; i ++)//Get two of the four to calculate and then store the new number into the array p; for(int j = i + 1; j 4 ; j ++,temp ++){ p[temp][0] = numb + numb[j]; p[temp][1] = numb - numb[j]; p[temp][2] = numb[j] - numb; p[temp][3] = numb * numb[j]; if(numb[j] != 0) p[temp][4] = numb / (double)numb[j]; else p[temp][4] = 10000; if(numb != 0) p[temp][5] = numb[j] / (double)numb; else p[temp][5] = 10000;

关于java24算法和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-04,除非注明,否则均为首码项目网原创文章,转载请注明出处。