实现函数

int is_find = 0;
void dfs(double *arr,double temp,int dep){if(dep == (sizeof(arr)) && is_find==0 &&temp ==24){is_find = 1;}else{if(dep < sizeof(arr) && is_find==0){for(int i=0;i<4;i++){if(i == 0){dfs(arr,temp += arr[dep],dep+1);}if(i == 1){dfs(arr,temp -= arr[dep],dep+1);}if(i == 2){dfs(arr,temp *= arr[dep],dep+1);}if(i == 3){dfs(arr,temp /= arr[dep],dep+1);}}}}
}

完整测试代码

#include <stdio.h>
#include <stdlib.h>double list[120][4] = {0};
int count = 0;void swap(double *x,double *y)
{double temp=*x;*x=*y;*y=temp;
}void  permutation(double *arr, int begin , int size){if(begin == size){for(int i =0; i< size; i++){list[count][i] = arr[i];}count++;}else {for(int j = begin; j < size; j++){swap(arr+begin,arr+j);permutation(arr,begin+1,size);swap(arr+begin,arr+j);}}
}int is_find = 0;
void dfs(double *arr,double temp,int dep){if(dep == (sizeof(arr)) && is_find==0 &&temp ==24){is_find = 1;}else{if(dep < sizeof(arr) && is_find==0){for(int i=0;i<4;i++){if(i == 0){dfs(arr,temp += arr[dep],dep+1);}if(i == 1){dfs(arr,temp -= arr[dep],dep+1);}if(i == 2){dfs(arr,temp *= arr[dep],dep+1);}if(i == 3){dfs(arr,temp /= arr[dep],dep+1);}}}}
}int main() {double c[4] = {0};while(scanf("%lf %lf %lf %lf",&c[0],&c[1],&c[2],&c[3]) != EOF){is_find =  0;permutation(c,0,4);for(int i=0;i < count;i++){dfs(list[i],list[i][0],1);if(is_find == 1){break;}}if(is_find == 0){printf("false\n");}else if(is_find == 1){printf("true\n");}for(int i=0;i<4;i++){c[i] = 0;for(int j=0;j<120;j++){list[j][i] = 0;}}}return 0;
}

24点(给出4个1-10的数字,通过加减乘除,得到数字为24就算胜利)相关推荐

  1. 有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多少只小白鼠才能在24小时时鉴别出那瓶水有毒?

    1.有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多少只小白鼠才能在24小时时鉴别出那瓶水有毒. 我来解释一下,并给出一个方案,时间不是问题,24小时内肯定可以找出 ...

  2. python中给出一个不超过10的正整数n_求计算机大佬解答python题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 7-4 计算指数 (5 分) 真的没骗你,这道才是简单题 -- 对任意给定的不超过10的正整数n,要求你输出2n.不难吧? 输入格式: 输入在一行中给出一 ...

  3. 找出第i个小元素(算法导论第三版9.2-4题)

    找出第i个小元素(算法导论第三版9.2-4题) 期望时间复杂度:Θ(n) 最坏情况的时间复杂度Θ(n^2) int randomized_select_based_loop(int *array,in ...

  4. 一篇英文文档中找出频数最多的10个单词

    """一篇英文文档中找出频数最多的10个单词collections: Counter 提供计数器工具以支持方便和快速的计数 most_common(n) 返回n个最常见元 ...

  5. php弹窗24小时一次,JS利用cookies设置每隔24小时弹出框

    废话不多说了,直接给大家贴代码了,具体代码如下所示: function cookieGO(name) { var today = new Date(); var expires = new Date( ...

  6. 2016年8月24日 星期三 --出埃及记 Exodus 16:25

    2016年8月24日 星期三 --出埃及记 Exodus 16:25 "Eat it today," Moses said, "because today is a Sa ...

  7. 高仿163网站广告弹出层(每天定时24小时弹出一次)

    高仿163网站广告弹出层(每天定时24小时弹出一次) 这里和京东首页定时弹出广告功能一样:用JS实现网站首页弹出广告:超级炫酷的定时弹出图片广告:淘宝网站广告弹出层实现. 高仿163网站广告弹出层(每 ...

  8. 海量数据处理 大量数据中找出最大的前10个数 (Top K 问题)

    在工作中我们常遇到此类问题,从一个大量甚至海量的数据中取出前几个大的数.必须在海量的文章中取出点击量最大的10篇文章. 此类问题其实就是Top K问题. 给定一个数据(数据量海量 N),想找到前 K ...

  9. 做好5步操作,轻松写出一篇价值10万的软文

    今天,吕杭泽带给大家的是软文的写作技巧,我们全方位.360度的来深度剖析一下:软文到底应该怎么写呢? 软文,软文,首先要软!相对硬性广告而言,软文的精髓就在于一个字"软"!软文是广 ...

  10. 2017年7月24日 星期一 --出埃及记 Exodus 28:15

    2017年7月24日 星期一 --出埃及记 Exodus 28:15 "Fashion a breastpiece for making decisions--the work of a s ...

最新文章

  1. hive修改 表/分区语句
  2. 五种网络管理技巧优化网络办公环境
  3. 2017年10大年度最佳的ICO项目
  4. 5.prometheus告警插件-alertmanager、自定义webhook案例编写
  5. oracle USER 与 Schema 的关系与区别
  6. 【OpenGL】详解第一个OpenGL程序
  7. Java核心类库篇4——集合
  8. Ansible 学习总结(2)—— Ansible playbook 入门详解
  9. JavaEE 微信支付
  10. mysql创建gbk库_MYSQL创建utf-8和GBK格式数据库_MySQL
  11. python 关于sys.argv[1]语句报错IndexError: list index out of range的解决
  12. 【STM32H7教程】第88章 STM32H7的SDMMC总线应用之SD卡移植FatFs文件系统
  13. 2020初中计算机考试,2020年下半年中学教师资格证笔试真题及答案:初中信息技术(网友版)...
  14. JVM堆内存(新生代,老年代,Xms,Xmx)学习整理
  15. 计算机动画基础 吴,chap3计算机动画的图形基础-1(2学时)-2010.9.16.ppt
  16. 电梯黑板签到的测试用例
  17. Python爬虫入门10:select方法快速定位HTML内容
  18. 群晖nas tv android,dsvideo电视版官方下载
  19. 嵌入式Linux开发环境搭建之八---Ubuntu16.04 tftp环境搭建
  20. 为什么会出现梯度爆炸和梯度消失现象?怎么缓解这种现象的发生?

热门文章

  1. 有赞线上拨测系统实践(一)
  2. 关于Mongodb的全面总结
  3. 整数翻转-LeetCode No7
  4. 讨厌的HR [转贴] --一篇颇有争议的文章
  5. Interproscan linux版本详细安装教程及运行报错解决方案
  6. 学习笔记:python游戏脚本1.0版本,实现自动点击、识图、识别价格、弹窗提示低于预期价格可以购买
  7. SQL注入——SQL注入具体防御方案
  8. Unity 碰撞位置
  9. css3中var函数
  10. 【原创】软件测试工程师-面试感悟-面试经验-面试官思维 分享