C语言实现24点游戏算法

纸牌游戏24点,输入4个1到13之间的值,通过加减乘除判断是否可以得到24。

#include <stdio.h>
#include <string.h>
#include <stdbool.h>

bool game24(char ch[],char flat,int data[],int num,int sum)
{
    if(num > 1)//记录加减乘除符号,其中表示将除数和被除数调换位置ab ==> b/a.
        ch[num-2] = flat;
    if(num == 4)
    {
        if(sum == 24)//能够得到24就返回true
            return true;
        else
            return false;
    }
    if(num == 0)//第一次进来
    {
        return game24(ch,'0',data,num+1,data[num]);
    }
    if(sum%data[num] == 0)//能够整除(因为如果有余数时,计算机只会取整数部分,得到的结果就错了)
    {
        if(sum != 0)//避免除以0
            return game24(ch,'+',data,num+1,sum+data[num])||game24(ch,'-',data,num+1,sum-data[num])||game24(ch,'*',data,num+1,sum*data[num])||game24(ch,'/',data,num+1,sum/data[num])||game24(ch,'\',data,num+1,data[num]/sum);
        else
            return game24(ch,'+',data,num+1,sum+data[num])||game24(ch,'-',data,num+1,sum-data[num])||game24(ch,'*',data,num+1,sum*data[num])||game24(ch,'/',data,num+1,sum/data[num]);
    }else
    {
        if(sum != 0)
            return game24(ch,'+',data,num+1,sum+data[num])||game24(ch,'-',data,num+1,sum-data[num])||game24(ch,'*',data,num+1,sum*data[num])||game24(ch,'\',data,num+1,data[num]/sum);
        else
            return game24(ch,'+',data,num+1,sum+data[num])||game24(ch,'-',data,num+1,sum-data[num])||game24(ch,'*',data,num+1,sum*data[num]);
    }
    
}

//对四个数字进行排列组合
bool sort(int data[],char ch[],int a,int b,int c,int d)
{
    int num = 0,sum = 0;
    int i = 0;
    int j = 0;
    int n = 0;
    int m = 0;
    for(i=0;i<4;i++)
    {
        for(j=0;j<4;j++)
        {
            if(i == j)
                continue;
            for(n=0;n<4;n++)
            {
                if(n == j || n == i)
                    continue;
                for(m=0;m<4;m++)
                {
                    if(m == n || m == j || m == i)
                        continue;
                    data[i] = a;
                    data[j] = b;
                    data[n] = c;
                    data[m] = d;
                    if(game24(ch,'0',data,num,sum))
                        return true;  
                }
            }
        }
    }
    
    return false;
}

int main()
{
    int a = 1;
    int b = 2;
    int c = 8;
    int d = 9;
    int data[4] = {0};
    char ch[3] = {0};
    if(sort(data,ch,a,b,c,d))
    {
        printf("%d%c%d%c%d%c%dn",data[0],ch[0],data[1],ch[1],data[2],ch[2],data[3]);
    }
    else
        printf("falsen");
}

>>
C语言解决八皇后问题
C语言实现汉诺塔

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码

)">
< <上一篇
下一篇>>