算法第五节:解决“体彩29选7彩票组合”问题
来源:互联网 发布:苹果6s连不上移动数据 编辑:程序博客网 时间:2024/04/27 15:40
问题描述:假设有一个29选7的彩票,每注有7个1-29 的数字组成,且这7个数字不能相同,编写程序生成所有的号码组合。
算法分析:采用试探法可以逐步解出所有可能的组合,首先分析按照如下顺序生成彩票号码:
29 28 27 26 25 24 23
29 28 27 26 25 24 21
29 28 27 26 25 24 21
………..
29 28 27 26 25 24 1
29 28 27 26 25 23 22
………..
从上述排列顺序来看,在生成组合时首先变化最后一位,当最后一位为1时将试探计算倒数第二位,并且使该位值减1,到最后再变化最后一位,通过上述递归调用。
实现代码如下:
#include<stdio.h>#define MAXN 7 //设置每一注彩票的位数#define NUM 29 //设置组成彩票的数字int num[NUM]; //用来储存各生成的数字int lottery[MAXN]; //用来储存每注彩票的各个数字int i, j;void combine(int n, int m);//申明彩票号码生成函数int main(){ for (i = 0; i < NUM; i++)//设置彩票各位数字 num[i] = i + 1; for (i = 0; i < MAXN; i++) lottery[i] = 0; combine(NUM, MAXN); getchar(); return 0;}void combine(int n, int m){//彩票号码生成函数 for (i = n; i >= m; i--){ lottery[m - 1] = num[i - 1];//保存一位数字 if (m > 1) combine(i - 1, m - 1); else{ //若m=1,输出一注号码 for (j = MAXN - 1; j >= 0; j--){ printf("%3d", lottery[j]); if (j%7==0) //每输出7个数换一行 printf("\n"); } } }}
运行结果如下:
阅读全文
0 0
- 算法第五节:解决“体彩29选7彩票组合”问题
- oc-------体彩11选五算法
- 组合数算法-解决溢出问题
- 体彩7位数生成器
- 回朔算法(试探算法)-彩票号码组合
- 用于彩票3D的一个组合算法
- 每日一算法7--35选7彩票程序
- 彩票算法
- 第9周上机实践项目6——穷举法解决组合问题(3~7)
- 第9周项目6-穷举法解决组合问题(6,7,8)
- 第9周 项目6 穷举法解决组合问题
- 第9周项目6穷举法解决组合问题
- 第9周项目6穷举法解决组合问题
- 第9周项目6-穷举法解决组合问题
- 第9周项目6-穷举法解决组合问题
- 第9周项目 6 穷举法解决组合问题
- 彩票36选7
- 彩票35选7
- HDU1968 Just a Hook
- 自增和自减运算符
- Bootstrap3 排版之个人学习笔记
- 数组集合删除算法
- JavaScript随笔7.12
- 算法第五节:解决“体彩29选7彩票组合”问题
- CSS基础知识入门学习
- React Native实现第三方分享、登录功能(Android,IOS双平台)
- gradle本地、远程仓库配置
- passive polyfill 代码
- npm install 安装不成功,提示python2.7
- Linux进程全解2——进程环境(环境变量、进程运行的虚拟地址空间)
- Redis搭建集群
- JZOJ100041. 【NOIP2017提高A组模拟7.12】列车调度