正文

stu(1191)2005-08-30 20:20:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/elva6401/4276.html

分享到:

#include <stdio.h>
#include <math.h>

#define TheBigNumber 9999999            //出错信息
#define Epslon 0.0000000001

typedef double (*pfddd)( double, double);

double add( double, double);
double sub( double, double);
double mult( double, double);
double div( double, double);
void convert( char, int);

int cardsnum[4];

int is24 (double x) { return fabs(x - 24) < Epslon ; }

void test( char a, char b, char c, char d) {
   pfddd f[4] = {add, sub, mult, div};
   char  o[4] = {'+', '-', '*', '/'};
   int i, j, k, l, m, n;

   convert( a, 0);
   convert( b, 1);
   convert( c, 2);
   convert( d, 3);
   for (i = 0; i < 4; ++i)
      for (j = 0; j < 4; ++j) {
         if (j == i)
            continue;
         for (k = 0; k < 4; ++k) {
            if (k == i || k == j)
               continue;
            for (l = 0; l < 4; ++l)
               for (m = 0; m < 4; ++m)
                  for (n = 0; n < 4; ++n)
                     if (is24 (f[n]( f[m]( f[l](cardsnum[i], cardsnum[j]), cardsnum[k]), cardsnum[6-i-j-k]))) {
                        /*printf( "((%d %c %d) %c %d) %c %d\n",
                                 cardsnum[i], o[l], cardsnum[j], o[m], cardsnum[k], o[n], cardsnum[6-i-j-k]);*/
                        printf( "yes\n");
                        return;
                     } else if (is24 (f[n]( f[l](cardsnum[i], f[m]( cardsnum[j], cardsnum[k])), cardsnum[6-i-j-k]))) {
                        /*printf( "(%d %c (%d %c %d)) %c %d\n",
                                 cardsnum[i], o[l], cardsnum[j], o[m], cardsnum[k], o[n], cardsnum[6-i-j-k]);*/
                        printf( "yes\n");
                        return;
                     } else if (is24 (f[m]( f[l](cardsnum[i], cardsnum[j]), f[n]( cardsnum[k], cardsnum[6-i-j-k])))) {
                        /*printf( "(%d %c %d) %c (%d %c %d)\n",
                                 cardsnum[i], o[l], cardsnum[j], o[m], cardsnum[k], o[n], cardsnum[6-i-j-k]);*/
                        printf( "yes\n");
                        return;
                     } else if (is24 (f[l](cardsnum[i], f[n]( f[m]( cardsnum[j], cardsnum[k]), cardsnum[6-i-j-k])))) {
                        /*printf( "%d %c ((%d %c %d) %c %d)\n",
                                 cardsnum[i], o[l], cardsnum[j], o[m], cardsnum[k], o[n], cardsnum[6-i-j-k]);*/
                        printf( "yes\n");
                        return;
                     } else if (is24 (f[l](cardsnum[i], f[m]( cardsnum[j], f[n]( cardsnum[k], cardsnum[6-i-j-k]))))) {
                        /*printf( "%d %c (%d %c (%d %c %d))\n",
                                 cardsnum[i], o[l], cardsnum[j], o[m], cardsnum[k], o[n], cardsnum[6-i-j-k]);*/
                        printf( "yes\n");
                        return;
                     }
         }
      }
   printf( "no\n");
   return;
}

阅读(2558) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册