枚举法----狱吏问题(C语言描述)
来源:互联网 发布:ppp项目数据库app 编辑:程序博客网 时间:2024/05/06 14:59
问题描述:
某王国对囚犯进行大赦,让一狱吏n次通过一排锁着的n间牢房,每通过一次按所定规则转动门锁,每转动一次,原来锁着的被打开,原来打开的被锁上;通过n次后,门锁开着的,牢房中的犯人放出,否则犯人不得获释.转动门锁的规则是这样的,第一次通过牢房,要转动每一把门锁,即把全部锁打开;第二次通过牢房时,从第二间开始转动,每隔一间转动一次;第k次通过牢房,从第k间开始转动,每隔k-1 间转动一次;问通过n次后,那些牢房的锁仍然是打开的?
问题分析:
狱吏问题其实就是一个数学问题,当且仅当n为完全平方数时,n的因子个数为奇数,只需要找到小于n的完全平方数即可!
代码如下:
#include "stdio.h"#include "math.h"int warder(int n){ int a[256]; int i,j=0,temp; for(i=1;i<=n;i++){temp=(int)sqrt((float)i);if(!(temp*temp-i)) a[j++]=i; } for(i=0;i<j;i++){ printf("%d is free\n",a[i]); }}void main(){ int n; printf("请输入n的值:"); scanf("%d",&n); warder(n);}
运行结果:
0 0
- 枚举法----狱吏问题(C语言描述)
- 8皇后问题(c 语言描述)
- 蛮力法——狱吏问题
- 用C语言联合体和枚举描述数据库
- C语言宏实现枚举变量转为字符串描述
- 基于Las Vegas 和回溯法的皇后问题(C语言描述)
- 骑士巡游问题源码C语言描述
- c语言描述生产者消费者问题
- 数据结构(C语言描述)
- c语言(枚举类型)
- 狱吏问题--数学建模的使用
- 分治法-二分查找(c语言描述)
- 分治法-----归并排序(C语言描述)
- 自我探讨 国王和狱吏(合数)
- 排序算法(c语言描述)
- 冒泡排序(C语言描述)
- 编译器构造(C语言描述)第一章
- 轮转调度算法(C语言描述)
- vim实现自动翻译单词
- oracle创建序列|oracle创建sequence
- 企业服务总线项目集成标准
- 01背包与完全背包是如何从二维转化为一维
- Linux的几个命令
- 枚举法----狱吏问题(C语言描述)
- UIImage非正方形图片如何剪切为正方形
- sql语句中用as新增不存在的字段
- USB Type A/B/C基本知识和各版本区别
- SQL sum函数在字段没数据时返回null,如何让其返回0的解决方案
- 广义线性模型 R--glm函数
- vue+webpack构建项目过程
- Parity发布革命性区块链理念“Polkadot”
- myeclipse10.6从svn上检出的maven项目无jre和Maven Dependencies依赖包