数字间隔问题-递归

1121人阅读 评论(0) 收藏 举报
分类:


题目: 
一个14位的数字,由两组1-7的数组成 
要求:11之间有一个数,22之间有两个数,以此类推 
开头两位数字为7,4 
求出这个14位数

正确结果 74151643752362

/*
题目:
一个14位的数字,由两组1-7的数组成
要求:1与1之间有一个数,2与2之间有两个数,以此类推
开头两位数字为7,4
*/
 
#include<stdio.h>
 
 
 
int Change(int i,int n[],intm[]){        //  i当前需要变动的位置  n变动的数组 m取数的数组
    int j;
    for(;i<14;i++){
        if(n[i]==0){
            for(j=0;j<5;j++){
//             printf("i=%d,i=%d,j=%d,m[j]=%d\n",i,n[i],j,m[j]);   //方便查看数据
                if(m[j]!=0&&n[i+1+m[j]]==0&&(i+1+m[j])<14){
                    n[i]=m[j];
                    n[i+1+m[j]]=m[j];
                    m[j]=0;
//                                                int len;              //方便查看数据
//                                                for(len=0;len<14;len++){
//                                                 printf("%d ",n[len]);
//                                                  }                  //可以查看结果
                    Change(i+1,n,m);
                    m[j]=n[i];
                    n[n[i]+1+i]=0;
                    n[i]=0;                  //恢复原状态,进行下一步操作
                }
        }
    if(j==5&&n[i]==0){//避免不必要的递归加快速度。当然可以全排列
            break;
        }
    }
}
    if(i==14)
    for(i=0;i<14;i++){
        printf("%d",n[i]);//输出结果 放在外部更好
    }
}
 
int main(){
    int n[14]={7,4,0,0,0,0,4,0,7,0,0,0,0,0};
    intm[5]={6,5,3,2,1};
    Change(2,n,m);
    return0;
}


 

查看评论

递归的方法求平均数

这是QQ上看到的问题,最初是这么想的:double Average(double x[],int n){    if(n != 0){        return ((Average(x,n-1))*...
  • adream307
  • adream307
  • 2009-12-21 23:16:00
  • 1792

C语言实验——时间间隔

Problem Description 从键盘输入两个时间点(24小时制),输出两个时间点之间的时间间隔,时间间隔用“小时:分钟:秒”表示。 如:3点5分25秒应表示为--03:05:25.假设两...
  • be_your_back
  • be_your_back
  • 2016-10-23 15:02:04
  • 7228

【算法复习二】传统基本算法(迭代、递归、分治)

一,迭代与递推        1)迭代法也称“辗转法”,是一种不断用变量的旧值递推出新值的解决问题的方法。迭代算法一般用于数值计算。迭代法应该是我们早已熟悉的算法策略,程序设计语言课程中所学的累加、...
  • tianshuai11
  • tianshuai11
  • 2012-05-03 16:55:05
  • 1581

简单递归入门题 (1)凑数字

题目描述 有n个数字,a[1],a[2],a[3]......a[n],以及一个数字m。 问n个数字中取出一些数字,这些数字的和能否等于m。 输入 多组测试数据,读入到文件尾结束。 第一行输入...
  • qq_36539373
  • qq_36539373
  • 2017-01-14 20:01:19
  • 493

阶梯问题递归求解

  • 2015年09月20日 01:39
  • 556B
  • 下载

css table自动布局下<td>宽度计算

关于td的宽度在table自动布局情况下的变化,好像并不像CSS权威指南说的那样。经过一番测试计算最终发现计算方法如下: 在css权威指南中对于单元格宽度计算和设置方法如下: 测试用例: ...
  • qq_27090183
  • qq_27090183
  • 2015-08-16 15:46:16
  • 6058

数值分析:数据插值方法

http://blog.csdn.net/pipisorry/article/details/62227459插值、拟合和逼近的区别据维基百科,科学和工程问题可以通过诸如采样、实验等方法获得若干离散的...
  • pipisorry
  • pipisorry
  • 2017-03-15 16:53:22
  • 5009

统计数字问题 算法实现 (补0递归法)

统计数字问题 算法实现 (补0递归法) 问题描述:一本书的页码从自然数1开始顺序编码直到自然数n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0。例如第6页用6表示而不是06或006。...
  • acm17773729889
  • acm17773729889
  • 2017-09-25 22:21:40
  • 395

数字拆分--递归

将一个数字拆分为几个自然数相加的形式,列举出所有可能。 比如: 输入:5 输出: 1 + 1 + 1 + 1 + 1 1 + 1 + 1 + 2 1 + 1 + 3 1 + 2 + 2 ...
  • whd526
  • whd526
  • 2016-03-06 20:43:43
  • 1195

Anton and Classes(贪心)

B. Anton and Classestime limit per test4 secondsmemory limit per test256 megabytesinputstandard inpu...
  • a17865569022
  • a17865569022
  • 2018-04-03 18:13:39
  • 5
    个人资料
    持之以恒
    等级:
    访问量: 16万+
    积分: 3696
    排名: 1万+
    博客专栏