数字排列
来源:互联网 发布:淘宝最厉害的算命 编辑:程序博客网 时间:2024/06/11 23:27
今有7对数字:两个1,两个2,两个3,...两个7,把它们排成一行。
要求,两个1间有1个其它数字,两个2间有2个其它数字,以此类推,两个7之间有7个其它数字。如下就是一个符合要求的排列:
17126425374635
当然,如果把它倒过来,也是符合要求的。
请你找出另一种符合要求的排列法,并且这个排列法是以74开头的。
注意:只填写这个14位的整数,不能填写任何多余的内容,比如说明注释等。
要求,两个1间有1个其它数字,两个2间有2个其它数字,以此类推,两个7之间有7个其它数字。如下就是一个符合要求的排列:
17126425374635
当然,如果把它倒过来,也是符合要求的。
请你找出另一种符合要求的排列法,并且这个排列法是以74开头的。
注意:只填写这个14位的整数,不能填写任何多余的内容,比如说明注释等。
74****4*7*******
利用回溯法求解,参考代码如下:
#include <stdio.h>int a[8];int place(int t);int judge();void backtrack(int t){int i;if(t==8){if(a[7]==1 && a[4]==2 && judge()){/*for(i=1;i<8;i++)printf("%3d",a[i]);printf("\n");*/int b[15]={0};for(i=1;i<8;i++){b[a[i]]=i;b[a[i]+i+1]=i;}for(i=1;i<15;i++)printf("%3d",b[i]);printf("\n");}}else{for(i=1;i<14;i++){a[t]=i;if((t+i+1<=14) && place(t))backtrack(t+1);}}}int judge(){int flag=1;int i;int b[15]={0};for(i=1;i<8;i++){b[a[i]]=i;b[a[i]+i+1]=i;}for(i=1;i<15;i++){if(b[i]==0){flag=0;break;}}return flag;}int place(int t){int i;int flag=1;for(i=1;i<t;i++){if(a[t]==a[i] || a[t]==(a[i]+i+1)){flag=0;break;}}return flag;}int main(){backtrack(1);return 0;}答案为:
74151643752362
0 0
- 数字排列
- 数字排列
- 数字排列
- 数字排列
- 数字排列
- 数字排列
- 数字排列
- 数字排列
- 数字排列
- 数字的全排列
- 矩阵特殊数字排列
- 1234数字排列
- POJ1731_2(重复数字排列)
- 打印数字全排列
- 腾讯- 数字排列
- 数字的全排列
- 数字排列问题
- fzu 2120 数字排列
- 只运行一个应用程序的实例
- Java基础——GUI
- 最近的一次敏捷项目Scrum经验总结
- iOS中深拷贝和浅拷贝的3种理解和1个注意点
- NGUI 3.5教程(六)Font字体
- 数字排列
- mongodb基础知识(图片)
- 【leetcode】Find Peak Element
- nutch 1.7 导入 eclipse 其他版本类似
- NGUI 3.5教程(七)Input 输入框
- JNI学习一(最简单的java调 用本地c代码 )
- 基于ACCESS和ASP的SQL多个表查询与计算统计代码(一)
- 【C++ Primer】【学习笔记】【第三章】标准库类型之:string类型
- 两分钟让你明白cocos2dx的屏幕适配策略