最近看到一个网站上有个游戏叫幸运28,看了一下挺好玩的.游戏的原则就是,有三位数.第一位,第二位,第三位都是从0-9的之中随机选一个数,然后三个数相加后得到一个数.你的目的就是猜中三位数相加后的数.
我现在想的就是给你100000,如何分配这100000使得最后的收益最大.
这几天我都想这个问题.但是由于算法很不合理.搞得处理机几秒钟处理一次数据.
不过这28个数的概率是很轻松就得出来了,代码如下:
public class gailv {
public static void main(String args[]){
int count=0;
for(int m=0;m<28;m++){
for(int i=0;i<=9;i++)
for(int j=0;j<=9;j++)
for(int k=0;k<=9;k++)
if(m==k+j+i){
count++;
}
System.out.println(m+"的个数是:"+count);
float gl= (float)count;
System.out.println(m+"的概率是:"+(gl/10)+"%");
count=0;}
}
}
求如何分配这10000,使得收益最大?期待答案.
ps:为了不误导大家我就不把收益的那段代码写上了.
我现在想的就是给你100000,如何分配这100000使得最后的收益最大.
这几天我都想这个问题.但是由于算法很不合理.搞得处理机几秒钟处理一次数据.
不过这28个数的概率是很轻松就得出来了,代码如下:
public class gailv {
public static void main(String args[]){
int count=0;
for(int m=0;m<28;m++){
for(int i=0;i<=9;i++)
for(int j=0;j<=9;j++)
for(int k=0;k<=9;k++)
if(m==k+j+i){
count++;
}
System.out.println(m+"的个数是:"+count);
float gl= (float)count;
System.out.println(m+"的概率是:"+(gl/10)+"%");
count=0;}
}
}
求如何分配这10000,使得收益最大?期待答案.
ps:为了不误导大家我就不把收益的那段代码写上了.
int[] counts = new int[28];
int sum = 0;
for (int i = 0; i <= 9; i++)
for (int j = 0; j <= 9; j++)
for (int k = 0; k <= 9; k++) {
counts[i + j + k]++;
sum++;
}
for (int i = 0; i < counts.length; i++) {
System.out.println(i + "的个数是:" + counts[i]);
System.out.println(i + "的概率是:" + (counts[i] * 100 / (float)sum ) + "%");
}
int[] counts = new int[3*MAX_VALUE+1];
int sum = 0;
for (int i = 0; i <= MAX_VALUE; i++)
for (int j = 0; j <= MAX_VALUE; j++)
for (int k = 0; k <= MAX_VALUE; k++) {
counts[i + j + k]++;
sum++;
}
for (int i = 0; i < counts.length; i++) {
System.out.println(i + "的个数是:" + counts[i]);
System.out.println(i + "的概率是:" + (counts[i] * 100 / (float)sum ) + "%");
}
还有那个sum应该会溢出 10000太大了
代码如下:
用num[28]这个数组装这10000元。
数组a[28]是这28个数的概率。
mm1是最大收益。
break用的不是很到位,应该是这个算法不是很的原因所在。
for(num[0]=0;num[0]<=10000;num[0]++)
outer1:
for(num[1]=0;num[1]<=10000;num[1]++)
{
if(num[0]+num[1]>10000)
{
break outer1;}outer2:
for(num[2]=0;num[2]<=10000;num[2]++)
{
if(num[0]+num[1]+num[2]>10000)
{
break outer2;}outer3:
for(num[3]=0;num[3]<=10000;num[3]++)
{
if(num[0]+num[1]+num[2]+num[3]>10000)
{
break outer3;}outer4:
for(num[4]=0;num[4]<=10000;num[4]++)
{
if(num[0]+num[1]+num[2]+num[3]+num[4]>10000)
{
break outer4;}outer5:
for(num[5]=0;num[5]<=10000;num[5]++)
{
if(num[0]+num[1]+num[2]+num[3]+num[4]+num[5]>10000)
{
break outer5;}outer6:
for(num[6]=0;num[6]<=10000;num[6]++)
{
if(num[0]+num[1]+num[2]+num[3]+num[4]+num[5]+
num[6]>10000)
{
break outer6;}outer7:
for(num[7]=0;num[7]<=10000;num[7]++)
{
if(num[0]+num[1]+num[2]+num[3]+num[4]+num[5]+
num[6]+num[7]>10000)
{
break outer7;}outer8:
for(num[8]=0;num[8]<=10000;num[8]++)
{
if(num[0]+num[1]+num[2]+num[3]+num[4]+num[5]+
num[6]+num[7]+num[8]>10000)
{
break outer8;}outer9:
for(num[9]=0;num[9]<=10000;num[9]++)
{
if(num[0]+num[1]+num[2]+num[3]+num[4]+num[5]+
num[6]+num[7]+num[8]+num[9]>10000)
{
break outer9;}outer10:
for(num[10]=0;num[10]<=10000;num[10]++)
{
if(num[0]+num[1]+num[2]+num[3]+num[4]+num[5]+
num[6]+num[7]+num[8]+num[9]+num[10]>10000)
{
break outer10;}outer11:
for(num[11]=0;num[11]<=10000;num[11]++)
{
if(num[0]+num[1]+num[2]+num[3]+num[4]+num[5]+
num[6]+num[7]+num[8]+num[9]+num[10]+
num[11]>10000)
{
break outer11;}outer12:
for(num[12]=0;num[12]<=10000;num[12]++)
{
if(num[0]+num[1]+num[2]+num[3]+num[4]+num[5]+
num[6]+num[7]+num[8]+num[9]+num[10]+
num[11]+num[12]>10000)
{
break outer12;}outer13:
for(num[13]=0;num[13]<=10000;num[13]++)
{
if(num[0]+num[1]+num[2]+num[3]+num[4]+num[5]+
num[6]+num[7]+num[8]+num[9]+num[10]+
num[11]+num[12]+num[13]>10000)
{
break outer13;}outer14:
for(num[14]=0;num[14]<=10000;num[14]++)
{
if(num[0]+num[1]+num[2]+num[3]+num[4]+num[5]+
num[6]+num[7]+num[8]+num[9]+num[10]+
num[11]+num[12]+num[13]+num[14]>10000)
{
break outer14;}outer15:
for(num[15]=0;num[15]<=10000;num[15]++)
{
if(num[0]+num[1]+num[2]+num[3]+num[4]+num[5]+
num[6]+num[7]+num[8]+num[9]+num[10]+
num[11]+num[12]+num[13]+num[14]+num[15]>10000)
{
break outer15;}
outer16:
for(num[16]=0;num[16]<=10000;num[16]++)
{
if(num[0]+num[1]+num[2]+num[3]+num[4]+num[5]+
num[6]+num[7]+num[8]+num[9]+num[10]+
num[11]+num[12]+num[13]+num[14]+num[15]+
num[16]>10000)
{
break outer16;}outer17:
for(num[17]=0;num[17]<=10000;num[17]++)
{
if(num[0]+num[1]+num[2]+num[3]+num[4]+num[5]+
num[6]+num[7]+num[8]+num[9]+num[10]+
num[11]+num[12]+num[13]+num[14]+num[15]+
num[16]+num[17]>10000)
{
break outer17;}outer18:
for(num[18]=0;num[18]<=10000;num[18]++)
{
if(num[0]+num[1]+num[2]+num[3]+num[4]+num[5]+
num[6]+num[7]+num[8]+num[9]+num[10]+
num[11]+num[12]+num[13]+num[14]+num[15]+
num[16]+num[17]+num[18]>10000)
{
break outer18;}outer19:
for(num[19]=0;num[19]<=10000;num[19]++)
{
if(num[0]+num[1]+num[2]+num[3]+num[4]+num[5]+
num[6]+num[7]+num[8]+num[9]+num[10]+
num[11]+num[12]+num[13]+num[14]+num[15]+
num[16]+num[17]+num[18]+num[19]>10000)
{
break outer19;}outer20:
for(num[20]=0;num[20]<=10000;num[20]++)
{
if(num[0]+num[1]+num[2]+num[3]+num[4]+num[5]+
num[6]+num[7]+num[8]+num[9]+num[10]+
num[11]+num[12]+num[13]+num[14]+num[15]+
num[16]+num[17]+num[18]+num[19]+num[20]>10000)
{
break outer20;}outer21:
for(num[21]=0;num[21]<=10000;num[21]++)
{
if(num[0]+num[1]+num[2]+num[3]+num[4]+num[5]+
num[6]+num[7]+num[8]+num[9]+num[10]+
num[11]+num[12]+num[13]+num[14]+num[15]+
num[16]+num[17]+num[18]+num[19]+num[20]+
num[21]>10000)
{
break outer21;}outer22:
for(num[22]=0;num[22]<=10000;num[22]++)
{
if(num[0]+num[1]+num[2]+num[3]+num[4]+num[5]+
num[6]+num[7]+num[8]+num[9]+num[10]+
num[11]+num[12]+num[13]+num[14]+num[15]+
num[16]+num[17]+num[18]+num[19]+num[20]+
num[21]+num[22]>10000)
{
break outer22;}outer23:
for(num[23]=0;num[23]<=10000;num[23]++)
{
if(num[0]+num[1]+num[2]+num[3]+num[4]+num[5]+
num[6]+num[7]+num[8]+num[9]+num[10]+
num[11]+num[12]+num[13]+num[14]+num[15]+
num[16]+num[17]+num[18]+num[19]+num[20]+
num[21]+num[22]+num[23]>10000)
{
break outer23;}outer24:
for(num[24]=0;num[24]<=10000;num[24]++)
{
if(num[0]+num[1]+num[2]+num[3]+num[4]+num[5]+
num[6]+num[7]+num[8]+num[9]+num[10]+
num[11]+num[12]+num[13]+num[14]+num[15]+
num[16]+num[17]+num[18]+num[19]+num[20]+
num[21]+num[22]+num[23]+num[24]>10000)
{
break outer24;}outer25:
for(num[25]=0;num[25]<=10000;num[25]++)
{if(num[0]+num[1]+num[2]+num[3]+num[4]+num[5]+
num[6]+num[7]+num[8]+num[9]+num[10]+
num[11]+num[12]+num[13]+num[14]+num[15]+
num[16]+num[17]+num[18]+num[19]+num[20]+
num[21]+num[22]+num[23]+num[24]+num[25]>10000)
{
break outer25;}outer26:
for(num[26]=0;num[26]<=10000;num[26]++)
{
if(num[0]+num[1]+num[2]+num[3]+num[4]+num[5]+
num[6]+num[7]+num[8]+num[9]+num[10]+
num[11]+num[12]+num[13]+num[14]+num[15]+
num[16]+num[17]+num[18]+num[19]+num[20]+
num[21]+num[22]+num[23]+num[24]+num[25]+
num[26]>10000)
{
break outer26;}
outer27:
for(num[27]=0;num[27]<=10000;num[27]++)
{
if(num[0]+num[1]+num[2]+num[3]+num[4]+num[5]+
num[6]+num[7]+num[8]+num[9]+num[10]+
num[11]+num[12]+num[13]+num[14]+num[15]+
num[16]+num[17]+num[18]+num[19]+num[20]+
num[21]+num[22]+num[23]+num[24]+num[25]+
num[26]+num[27]<=10000)
{
mm=a[0]*num[0]+a[1]*num[1]+a[2]*num[2]+a[3]*num[3]+a[4]*num[4]+
a[5]*num[5]+a[6]*num[6]+a[7]*num[7]+a[8]*num[8]+a[9]*num[9]+
a[10]*num[10]+a[11]*num[11]+a[12]*num[12]+a[13]*num[13]+a[14]*num[14]+
a[15]*num[15]+a[16]*num[16]+a[17]*num[17]+a[18]*num[18]+a[19]*num[19]+
a[20]*num[20]+a[21]*num[21]+a[22]*num[22]+a[23]*num[23]+a[24]*num[24]+
a[25]*num[25]+a[26]*num[26]+a[27]*num[27];
if(mm>mm1){
mm1=mm;
System.out.print("最大的金额是:"+mm1);
for(int b=0;b<28;b++)
System.out.print(" num["+b+"]="+num[b]);
}}
else{
break outer27;}
}//end 27
}//end 26
}//end 25
}//end 24
}//end 23
}//end 22
}//end 21
}//20
}//19
}//18
}//17
}//16
}//15
}//14
}//13
}//12
}//11
}//10
}//9
}//8
}//7
}//6
}//5
}//4
}//3
}//2
}//1