大家好,我是小跳,我来为大家解答以上问题。4 10 10 4算24点,4 10很多人还不知道,现在让我们一起来看看吧!
1、研究了一遍,不认为这是个经典程序;开始用冒泡排序将4张牌从大到小排列,后面没看出来有什么用,后面都是循环选取不同于先选的牌,大小顺序没用上。
2、 for(;;)
3、{
4、 cout<<"请给出你抽到的第一牌:";
5、 cin>>choice[0];
6、 cout<<"请给出你抽到的第二牌:";
7、 cin>>choice[1];
8、 cout<<"请给出你抽到的第三牌:";
9、 cin>>choice[2];
10、 cout<<"请给出你抽到的第四牌:";
11、 cin>>choice[3];//输入;
12、 for(b=0;b<=2;b++)
13、 for(a=3;a>=1+b;a--)if(choice[a]{ t=choice[a-1]; choice[a-1]=choice[a]; choice[a]=t; }//冒泡排序; for(int j=0;j<4;j++)cout<<<". "<<<" "; cout<<" "; for(i1=0;i1<4;i1++) { t1=choice[i1];//从大到小选第一张; for(i2=0;i2<4;i2++) { if((i1-1)!=0 && t1==choice[i1-1])break;//这应该就是遇到相同牌,跳出循环,重新输入4张牌吧; if(i2!=i1) { t2=choice[i2];//循环选取不同于第一张的牌进行4种运算; s1[0]=t1+t2; s1[1]=t1-t2; s1[2]=t1*t2; s1[3]=t1/t2;//数组S1[]记录前2张运算结果; ******************************************************************** for(i3=0;i3<4;i3++) { if(i3!=i1&&i3!=i2) { t3=choice[i3];//循环选不同前面的第三张; for(v=0;v<4;v++)//增加一个变量v,用2维数组记录前3张运算结果; { s2[v][0]=s1[v]+t3; s2[v][1]=s1[v]-t3; s2[v][2]=s1[v]*t3; s2[v][3]=s1[v]/t3;//前面如果得到的是S1[a];s2[a][]记录在之前的基础上的4种运算; } for(i4=0;i4<4;i4++) { if(i4!=i1&&i4!=i2&&i4!=i3) { t4=choice[i4];//选剩下的第四张; for(n1=0;n1<4;n1++)for(n2=0;n2<4;n2++)//2维数组的2个变量; if(s2[n1][n2]+t4==24||s2[n1][n2]-t4==24||s2[n1][n2]*t4==24||s2[n1][n2]/t4==24)//前3张的运算结果与第四张的运算,如果为24的话,就输出; ******************************************************************** { cout<<"找到第"<<<"种组合方案: (("< if(s1[n1]==t1+t2)cout<<" + "; if(s1[n1]==t1-t2)cout<<" - "; if(s1[n1]==t1*t2)cout<<" * "; if(s1[n1]==t1/t2)cout<<" / "; if(n2==0)cout<<<") + "< if(n2==1)cout<<<") - "< if(n2==2)cout<<<") * "< if(n2==3)cout<<<") / "< if(s2[n1][n2]+t4==24)cout<<") + "<<<" = 24 "; if(s2[n1][n2]-t4==24)cout<<") - "<<<" = 24 "; if(s2[n1][n2]*t4==24)cout<<") * "<<<" = 24 "; if(s2[n1][n2]/t4==24)cout<<") / "<<<" = 24 "; num++; mmm++; }//输出方法和统计个数; 以上希望对你有帮助。
本文到此讲解完毕了,希望对大家有帮助。