凭空起惊雷 2023-05-19 18:51 采纳率: 76.2%
浏览 12
已结题

C++ “数的划分”结果报错

题目背景
将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。
如 1,2,3 与 2,1,3 一致。
问有多少种不同的分法。

输入格式
n,k

输出格式
一个整数,即不同的分法

输入输出样例
输入样例
7 3
输出样例
4

说明 / 提示
时间限制:1.0s 内存限制:256.0MB
6<n<=200,2<=k<=6

我的代码

#include<iostream>
using namespace std;
int dp[205][10];
 
int main(){
    int n,k;
    cin>>n>>k;
    
    dp[0][0]=1;
    for(int i=1; i<=n; i++){
        for(int j=1; j<=i && j<=k; j++){
            dp[i][j]=dp[i-j][j]+dp[i-1][j-1];
        }
    }
    cout<<dp[n][k]<<endl;
    return 0;
}

我的代码感觉没问题,是哪里有错?
请将全部代码给我开一眼。我刚入门,不怎么懂!

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-05-19 22:07
    关注
    • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7724693
    • 除此之外, 这篇博客: C++算法设计与分析课后习题(第三章)中的 十二,有52张牌,使它们全部正面朝上,第一轮是从第2张开始,凡是2的倍数位置上的牌翻成正面朝下;第二轮从第3张牌开始,凡是3的倍数位置上的牌,正面朝上的翻成正面朝下,正面朝下的翻成正面朝上;第三轮从第4张牌开始,凡是4的倍数位置上的牌按上面相同规则翻转,以此类推,直到翻的牌超过104张为止。统计最后有几张牌正面朝上,以及他们的位置号。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • 书的前面有类似的例题,难度不大,先声明一个长度为52的数组,然后统一赋值为1,接下来创建一个大循环用于计算是否翻了超过104张牌,然后小循环用于遍历数组,查找能被当前倍数整除的数字编号并修改值,小循环执行后倍数的数字加一。

      #include <iostream>
      using namespace std;
      int main()
      {
      	int a[52], count{}, b{ 2 }, countUP{};
      	for (int i = 0; i < 52; i++)
      		a[i] = 1;
      	while (count <= 104)//大循环退出条件
      	{
      		for (int i = 0; i < 52; i++)//遍历数组
      		{
      			if ((i + 1) % b == 0)//检查是否能整除
      			{
      				if (a[i] == 1)//如果为正面朝上
      				{
      					a[i] = 0;//则改为正面朝下
      					count++;//翻牌次数加一
      					if (count > 104)//如果翻牌次数大于104则退出循环
      						break;
      				}
      				else if (a[i] == 0)//如果为正面朝下
      				{
      					a[i] = 1;//则改为正面朝上
      					count++;//翻牌次数加一
      					if (count > 104)//如果翻牌次数大于104则退出循环
      						break;
      				}
      			}
      		}
      		b++;
      	}
      	cout << "第 ";
      	for (int i = 0; i < 52; i++)//输出值
      	{
      		if (a[i] == 1)
      		{
      			countUP++;
      			cout << i+1 << "、";
      		}
      	}
      	cout << " 张牌正面朝上   一共有" << countUP << "张" << endl;
      }
      
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月7日
  • 已采纳回答 7月30日
  • 创建了问题 5月19日