| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1234 人关注过本帖, 1 人收藏
标题:程序设计(24点游戏)源码贴上来晒晒
只看楼主 加入收藏
江湖贫侠
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2008-4-10
结帖率:100%
收藏(1)
 问题点数:0 回复次数:2 
程序设计(24点游戏)源码贴上来晒晒
刚刚做完了个小程序,24点游戏,就此把代码贴上来晒晒,大家给点意见啊
用到的数据结构:队列、堆栈
用到的算法:中缀表达式转后缀表达式,后缀表达式的计算,穷举法(判断给定的4个数能否经()、+、-、*、/计算得出24)
QQ:353449704

24Points.rar (6.32 KB)
搜索更多相关主题的帖子: 程序设计 源码 堆栈 游戏 晒晒 
2008-06-21 11:40
Sruing
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-4-23
收藏
得分:0 
谈不上什么算法垃圾的很
程序代码:
// 24点求算.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
void jieguo1(int w,float x,float y);
void jieguo2(int w,float x);
float faze(float x,float y);
float s[6],ch[6],a[4];
int i=0,l=0,k=0;
int main(int argc, char* argv[])
{
float e;

 int t=0,p=0,q=0,c=0,d=0,m=0,f=0;
  m=0;

 for (i=0;i<=3;++i){
  scanf("%f",&a[i]);
                     }
for (i=0;i<=2;++i){

 for (l=i+1;l<=3;++l){
  faze(a[i],a[l]);

 for (t=0;t<=5;++t){
  ch[t]=s[t];
             }
for (f=0;f<=3;++f){

 if(f!=i&&f!=l){
  q=6-(i+f+l);
   for (k=0;k<=5;++k){
    faze(ch[k],a[f]); 
      for (p=0;p<=5;++p){
       e=s[p]+a[q];
        if (e==24){ 
        printf("(");
        jieguo2(p,a[f]);
         printf(")");                               
         printf("+%f=24\n",a[q]);
         printf("\n");
         m=1;
         break;}
          e=s[p]-a[q];
          if (e==24){
          printf("(");
           jieguo2(p,a[f]);
            printf(")"); 
             printf("-%f=24\n",a[q]);
             printf("\n");
          m=1;
          break;}
           e=a[q]-s[p];
           if (e==24){
           printf("%f-",a[q]);
            printf("(");
             jieguo2(p,a[f]);
              printf(")=24\n"); 
              printf("\n");
           m=1;
           break;}
            e=s[p]*a[q];
            if (e==24){
            printf("(");
            jieguo2(p,a[f]);
             printf(")"); 
             printf("*%f=24\n",a[q]);
             printf("\n");
            m=1;
            break;}
             if (a[q]!=0){
             e=s[p]/a[q];
             if (e==24){
             printf("(");
              jieguo2(p,a[f]);
               printf(")"); 
               printf("/%f=24\n",a[q]);
               printf("\n");
             m=1;
             break; }}
              if (s[p]!=0){
              e=a[q]/s[p];
              if (e==24){
              printf("%f/",a[q]);
              printf("(");
              jieguo2(p,a[f]);
               printf(")=24\n"); 
               printf("\n");
              m=1;
              break; }}
               if (a[q]!=0){
               e=s[p]/a[q];
               e=e-24;
               if (e<=0.00001&&e>0){
               printf("(");
               jieguo2(p,a[f]);
                printf(")"); 
                 printf("/%f=24\n",a[q]);
                 printf("\n");
               m=1;
               break; }}
                if (a[q]!=0){
               e=s[p]/a[q];
               e=e-24;
               if (e>=-0.00001&&e<0){
               printf("(");
                jieguo2(p,a[f]);
                 printf(")"); 
                 printf("/%f=24\n",a[q]);
                 printf("\n");
               m=1;
               break; }}
                if (s[p]!=0){
                e=a[q]/s[p];
                e=e-24;
                if (e<=0.00001&&e>0){
                printf("%f/",a[q]);
                 printf("(");
                  jieguo2(p,a[f]);
                   printf(")=24\n");
                   printf("\n");
                m=1;
                break; }}
                 if (s[p]!=0){
                 e=a[q]/s[p];
                 e=e-24;
                 if (e>=-0.00001&&e<0){
                 printf("%f/",a[q]);
                 printf("(");
                 jieguo2(p,a[f]);
                  printf(")=24\n");
                  printf("\n");
                 m=1;
                 break; }}
                          }
                           }
                            }
                             }
                              }
                               }                                      

                                 if(m==0)
                                  printf("i can not work out it");                                           
    return 0;
}

 float faze(float x,float y){
   int i;
    s[0]=x+y; 
     s[1]=x-y; 
      s[2]=y-x; 
       s[3]=x*y; 
        if(y!=0){  
         s[4]=x/y;}
           else {
                 s[4]=s[1]; }       
           if(x!=0){ 
          s[5]=y/x;} 
             else {
                   s[5]=s[1]; }         
    for (i=0;i<=5;++i){
    return s[i];
                } 
    return 0;
                 }
void jieguo1(int w,float x,float y){
switch(w){
    case 0: 
     printf("%f+%f",x,y);
      break;
    case 1: 
      printf("%f-%f",x,y);
       break;
    case 2:
     printf("%f-%f",y,x);
      break;
    case 3: 
     printf("%f*%f",x,y);
      break;
    case 4: 
     printf("%f/%f",x,y);
      break;
    case 5: 
     printf("%f/%f",y,x);
      break;
                                     }
                                      }
void jieguo2(int w,float x){
switch(w){
    case 0: 
     printf("%f+",x);
     printf("(");
      jieguo1(k,a[i],a[l]);
       printf(")");
      break;
    case 1: 
      printf("(");
      jieguo1(k,a[i],a[l]);
       printf(")");
     printf("-%f",x);
       break;
    case 2:
    printf("%f-",x);
      printf("(");
      jieguo1(k,a[i],a[l]);
       printf(")");
      break;
    case 3: 
     printf("%f*",x);
     printf("(");
      jieguo1(k,a[i],a[l]);
       printf(")");
      break;
    case 4: 
     printf("(");
      jieguo1(k,a[i],a[l]);
       printf(")");
     printf("/%f",x);
      break;
    case 5: 
     printf("%f/",x);
      printf("(");
      jieguo1(k,a[i],a[l]);
       printf(")");
      break;
                                     }
                                      }
2008-06-21 19:39
江湖贫侠
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2008-4-10
收藏
得分:0 
~~~~~
我想知道的是计算24点有没有好一点的算法
用穷举法我已经知道了
2008-06-22 09:35
快速回复:程序设计(24点游戏)源码贴上来晒晒
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031820 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved