当前位置:首页 > 题解目录 > 正文内容

【题解】航空母舰

亿万年的星光5年前 (2021-05-01)题解目录6329

3.航空母舰(aircraft.cpp)

【题目描述】

航空母舰(Aircraft Carrier),是一种以舰载机为主要作战武器的大型水面舰艇。依靠航空母舰,一个国家可以在远离其国土的地方、不依靠当地机场情况施加军事压力和进行作战。航空母舰已经是现代海军不可或缺的利器。也成为一个国家综合国力的象征。

假如,某国家有M艘相同的航空母舰,要把它们停放在N个相同的港口上,允许有的港口空着不用,问:共有多少种不同的停法(用K表示)?注意:5,1,1和1,5,1是同一种分法。

【输入描述】

第一行是测试数据数目t(0<=t<=20),以下每行均包含两个整数M和N,已空格分开。1<=M,N<=10。

【输出描述】

对输入的每组数据M和N,用一行输出相应的K。

【样例输入】

1
7 3


【样例输出】

8

【题目分析】



【参考代码1】

#include<bits/stdc++.h>
using namespace std;
//本题的算法思想为递归
int q(int n,int m)
{
    if(n==1||m==1)//当二者任意为1则就是一种
    {
        return 1;
    }
    if(n<m)  return q(n,n);//当m>n时没有意义便为q(n,n)
    /*n=m时可以分为两种情况,一个是使用n本身,只有一种情况。二个是使用不大于n-1的整数进行拆分。
    所以此时q(n,m)=1+q(n,n-1);*/
    if(n==m)
    {
        return q(n,m-1)+1;
    }
    /*
    n>m这时候有两种情况,一个是使用m对n进行拆分,一个是使用小于m的数对n进行拆分

对于第一个,使用m对n进行拆分,所以拆分出来的情况最大的数是m,剩下的所有数加起来为n-m,问题变成使用不大于m的整数对n-m进行拆分,所以此时为q(n-m,m)

对于第二个,使用小于m的数对n进行拆分,表示为q(n,m-1)
    */
    if(n>m)
        return q(n,m-1)+q(n-m,m);
}

int main()
{
    int n, m;
    int t;
    cin>>t;
    for(int i=0; i<t; i++)
    {
        cin>>n>>m;
        int k = q(n,m);
        cout<<k<<endl;
    }
    return 0;
}


【参考代码2】

#include<iostream>
#include<cstring>
using namespace std;
int a[20][20];
int f(int m,int n)
{
    int i,j;
    for(i=1;i<=n;i++)//0个苹果
        a[0][i]=1;
    for(i=1;i<=m;i++)//1个盘子
        a[i][1]=1;
    for(i=1;i<=m;i++)
        for(j=2;j<=n;j++)
            if(i<j)
                a[i][j]=a[i][i];
            else 
                a[i][j]=a[i][j-1]+a[i-j][j]; 
}
int main()
{
    int m,n,i,j,k;
    cin>>k;
    for(i=1;i<=k;i++)
    {
        cin>>m>>n;
        f(m,n);
        cout<<a[m][n]<<endl;
    }
    return 0;
}


    扫描二维码推送至手机访问。

    版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

    标签: 递归
    分享给朋友:

    相关文章

    【题解】切割钢管

    【题解】切割钢管

    【题目描述】小A是某工地的计算工程师。工地现有 n 根钢管,第 i 根钢管的长度为 ai。现在想用这 n 根钢管来做一个支撑用的柱子。我么可以切割这些钢管成为更短的钢管,但是不能缝合两根钢管。为了安全...

    【题解】老王赛马

    【题目描述】赛马是一古老的游戏,早在公元前四世纪的中国,处在诸侯割据的状态,历史上称为“战国时期”。在魏国作官的孙膑,因为受到同僚庞涓的迫害,被齐国使臣救出后,到达齐国国都。 赛马是当时最受...

    【题解】神奇的fans

    【题目描述】传说fans是一个数学天才。在他五岁那年,从一堆数字卡片中选出了4张 卡片:5,7,6,8。这4个数字有什么神秘之处呢?如果把这4张卡片自左往右的排成:5,6,7,8。你就会发现:原来这4...

    2021年市南区程序设计竞赛(小学组)

    1.建设病房(build.cpp)【题目描述】2020年1月23日下午,武汉市建设局紧急召集中建三局等单位举行专题会议,要求参照2003年抗击非典期间北京小汤山医院模式,在武汉职工疗养院建设火神山医院...

    【题解】踩方格

    【题目描述】有一个方格矩阵,矩阵边界在无穷远处。我们做如下假设:a、每走一步时,只能从当前方格移动一格,走到某个相邻的方格上;b、走过的格子立即塌陷无法再走第二次;c、只能向北、东、西三个方向走;请问...

    【题解】发工资

    【题目描述】作为程序猿,最盼望的日子就是每月的9号了,因为这一天是发工资的日子,养家糊口就靠它了,呵呵但是对于公司财务处的工作人员来说,这一天则是很忙碌的一天,财务处的小李最近就在考虑一个问题:如果每...