48行计算24点C语言代码(转载)
来源:互联网 发布:自学plc编程 百度云 编辑:程序博客网 时间:2024/05/21 22:29
学写24点时无意中看到的非常高大上的代码。。。。。。
#include <stdio.h>#include <string.h>#define SWAP(t, a, b) do {t v=a; a=b; b=v;} while (0)#define OP(o) do { a[1].n = a[0].n o a[1].n; \ sprintf(a[1].s, "(%s"#o"%s)", a[0].s, strcpy(t.s, a[1].s)); \ if (dfs(n - 1, a + 1, r)) return 1; \ a[1] = temp; } while (0)typedef struct data { double n; char s[8 * 7]; // 长度看你需要而设定} data;data num[4], t;int dfs( int n, data a[], double r ) { int i, j; if ( n == 1 ) if ( a[0].n-r > 1e-8 || a[0].n-r < -1e-8 ) return 0; else return 1; for ( i = 0; i < n; ++i ) { SWAP( data, a[i], a[0] ); for ( j = 1; j < n; ++j ) { SWAP( data, a[j], a[1] ); data temp = a[1]; OP( + ); OP( - ); OP( * ); if ( a[1].n > 1e-8 || a[1].n < -1e-8 ) OP( / ); SWAP( data, a[j], a[1] ); } SWAP( data, a[i], a[0] ); } return 0;}int main( void ) { int r = 24, i; for ( i = 0; i < 4; ++i ) { scanf( "%s", num[i].s ); sscanf( num[i].s, "%lf", &num[i].n ); } if ( dfs( 4, num, r ) ) printf( "%s = %d\n", num[3].s, r ); else printf( "No answer\n" ); return 0;}
转自:https://misakamm.com/blog
0 0
- 48行计算24点C语言代码(转载)
- C语言-纸牌计算24点小游戏
- c语言结构体内存模型及计算(转载)
- PAT 2-08 用扑克牌计算24点(C语言实现)
- PAT 2-08 用扑克牌计算24点(C语言实现)
- 计算24点C#代码
- C语言24点
- 数据点之间距离计算(转载)
- 优化C语言代码(程序员必读) ( 转载 )
- c 语言代码检视九大要点
- 协方差计算的C语言代码
- 协方差计算的C语言代码
- 常用矩阵计算C语言代码
- 协方差计算的C语言代码
- C语言代码计算神器for Mac
- 24点小游戏(c语言)
- 24点游戏(C语言)
- C语言中结构体大小计算即存储分配(转载)
- 黑马程序员——面向对象
- eclipse 修改背景色 插件
- android开发步步为营之68:Facebook原生广告接入总结
- CodeForces 349D Apple Tree(树形DP)
- 教育培训企业:如何优雅、机智地做邮件营销?
- 48行计算24点C语言代码(转载)
- listview用法
- Netty游戏服务器开发——利用Channel绑定机制 共享聊天服务器与逻辑服务器信息
- NYOJ 325 zb的生日
- 2012年5月SAT香港真题解析
- dwr框架与Spring整合
- HTML一些基础整理
- 开启博客之旅
- ModelGoon安装