[算法设计与分析]3.2.3数组记录状态信息(互不相同的9位数+圆圈报数游戏)
2018-03-22 20:45
316 查看
#include<stdio.h> #include<iostream> #include<string.h> using namespace std; void Different(); void CircleGame(); int main() { Different(); CircleGame(); } void Different() { long y1, y2; int p[10], num = 0, t, k; for(long x = 10000; x < 32000; x++) { for(int i = 0; i <= 9; i++) { p[i] = 1; } y1 = x * x; y2 = y1; k = 0; for(int i = 1; i <= 9; i++) { t = y2 % 10; y2 /= 10; if(p[t] == 1) { k++; p[t] = 0; } else break; } if(k == 9) { num++; cout << "No." << num << ": n=" << x << " n^2=" << y1 << endl; } } } void CircleGame() { int n = 4;//假设12个小孩 int interval = 2;//假设每七个数除去一人 即报7的人出圈 int a[100]; int k = 0;//k表示开始报数的人的编号及状态数组的下标变量 int p;//表示已退出圈外的人数 for(int i = 1; i <= n; i++) { a[i] = 1;//表示该位置上的孩子参与计数 对全部元素进行初始化 } p = 0; int x;//x表示正在报的数 while(p < n - 1)//因为p代表退出圈外的人数因此当p=n-1时结束循环 此时圈中还剩下一个人 { x = 0;//每次都要对x进行初始化 while(x < interval)//x<7的时候 { k++;//代表下一个人开始报数 if(k > n)//构成一个圈 k = 1; x += a[k];//若是a[k]上对应的已经出圈 则a[k]=0此时对x无影响 } printf("%d ", k); a[k] = 0; p++; } for(int i = 1; i <= n; i++) { if(a[i] == 1) printf("\n\nwinner is %d", i); } }
相关文章推荐
- [算法设计与分析]3.2.2数组使信息有序化(翻译为英文编号+找零)
- Java设计模式之从[游戏中的兵种状态转换]分析状态(State)模式
- 动态规划;多边形游戏;类似圈型石头合并;算法设计分析作业;
- [算法设计与分析]3.3.3信息数字化(判断小偷+得奖学生+次品箱+被多个数整除)
- 两个数组,大小都为n,两个数组里有相同的元素,设计一个算法,找到两个数组中相同的元素
- 刷卡信息上传到服务端,记录统计信息分析设计与实现。
- 给出n个学生的考试成绩表,每条记录由学号、姓名和分数和名次组成,设计算法完成下列操作: (1)设计一个显示对学生信息操作的菜单函数如下所示: *************************
- 状态驱动的游戏智能体设计(上)
- Java设计模式之从[游戏场景读取]分析代理(Proxy)模式
- 键盘状态字节各位记录的信息
- 如何高效设计游戏——从抽奖模型到圆桌算法
- 算法设计与分析-哈希表
- 【算法题】找出两个已序数组,是否含有相同的数字
- 验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。
- 南邮算法分析与设计实验4 密码算法
- 运用面向对象的分析与设计模式巧解面试算法题
- 南邮算法分析与设计实验2 动态规划法
- 状态驱动的游戏智能体设计(中英双语)
- [算法分析与设计] leetcode 每周一题: 494. Target Sum
- 算法分析与设计丨第十三周丨LeetCode(17)——Coin Change(Medium)