搜索
查看: 2294|回复: 2
打印 上一主题 下一主题

[原创] 一个算24的帮助程序,简称24点外挂。。

[复制链接]
跳转到指定楼层
楼主
发表于 2013-4-27 10:14:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

一个算24的帮助程序,简称24点外挂。。
//版本: 1.0
//功能:输入任意四个数,输出怎样计算可以得到24
//说明:有点问题,比如输入6 6 6 6 后,没有去除重复的


#include <stdio.h>
int key;//一个全局变量,用来做标示符的

int main()
{int i1,i2,i3,i4,i5;
int a[4],b[4];
int n=0;//n是用来判断是否有解的标志

system("title 算24外挂程序1.0 作者:zynpc");
system("color f0");
printf("请输入4个数,空格间隔,回车结束:\n");
scanf("%d%d%d%d",&a[0],&a[1],&a[2],&a[3]);//输入四个需要排列的数
system("cls");//清屏
for(i1=0;i1<4;i1++)//这一串是将四个数排列组合,并将其输入数组b
  {        b[0]=a[i1];
     for(i2=0;i2<4;i2++)
     {if(i2!=i1)
                                {b[1]=a[i2];
               for(i3=0;i3<4;i3++)
                                if(i3!=i1&&i3!=i2)
                                                                {b[2]=a[i3];
                                                                for(i4=0;i4<4;i4++)
                                                                if(i4!=i1&&i4!=i2&&i4!=i3) b[3]=a[i4];
                                
                               n+=pb(b);
                                }
                }       
               
               
     }
                                 
  }  
  if(n==0) printf("无解");         
        system("pause");
        return 0;
}


int pn(int x)//打印运算符号
{
switch(x)
{
       case 1:  printf("+");break;
       case 2:  printf("-");break;
       case 3:  printf("*");break;
       case 4:  printf("/");break;
}
return;
}

int fn(int x,int y,int z)//进行四则运算赋值,并且固定1为+ 2为- 3为* 4为/
{int l;
switch(x)
       {
       case 1:  l=y+z;break;
       case 2:  l=y-z;break;
       case 3:  l=y*z;break;
       case 4:  if(y%z==0&&y>z) {l=y/z;break;}
                else key=1;break;  //除法是否有效的判断,并输出一个判断的标示
       }
return l;      
}

int pb(int x[4])
{
        int a=x[0],b=x[1],c=x[2],d=x[3];
    int s1,s2,s3,s4;
    int i,j,k,n=0;

for(i=1;i<5;i++)
      {key=0;
      s1=fn(i,a,b);  
       if(key==1) continue;//标示符为1.说明除法有问题,所以直接进入下一个循环
                else for(j=1;j<5;j++)
                        {
            s2=fn(j,s1,c);     
                                if(key==1) continue;
                                else for(k=1;k<5;k++)
                                        {
                   s3=fn(k,s2,d);  
                                         if(key==1) continue;       
                     else if(s3==24) {n++;printf("((%d",a);pn(i);printf("%d)",b);
                    pn(j);printf("%d)",c);pn(k);printf("%d",d);printf("==24\n");}
                    } //打印结果      
            }      
      }        
     
               

        return n;
}


算24帮助程序.rar

4.82 KB, 下载次数: 21

沙发
发表于 2013-4-27 10:37:58 | 只看该作者
学习下
板凳
发表于 2013-6-27 13:00:50 | 只看该作者
学习学习{:soso_e100:}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表