HB皓月 2023-01-20 16:53 采纳率: 80%
浏览 20

C++堆栈溢出或者其他问题,洛谷。

给出一个数n,你需要将n写成若干个数的和,其中每个数的十进制表示中仅包含0和1。
问最少需要多少个数
输入输出格式
输入格式:一行 一个数 n(1≤n≤10^6)
输出格式:最少的数的个数,并给出一种方案。

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int a[1000000];
int main()
{
    int m,n,b[10],t=0,s=0,i;
    scanf("%d",&n);
    m=n;
    while(n!=0)
    {
        a[i]=n%10;
        n=n/10;
        t++;
    }
    //t=t-1;
    for(i=0;i<10;i++)
    {
        for(int j=0;j<t;j++)
        {
            if(a[j]>0)
            {
                b[i]=b[i]+pow(10,j);
                a[j]--;
            }
        }
        s=s+b[i];
        if(s==m)
        {
            i++;
            break;
        }
    }
    printf("%d\n",i);
    for(int j=0;j<i;j++)
    {
        printf("%d ",a[j]);
    }
}

运行结果及详细报错内容

输入一个数后,不会输出任何结果,最后在下方显示Process exited with return value 3221225477

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

之前无法输入数据的情况,把int数组设为了全局变量。
现在好像是堆栈溢出的原因,但还是找不到问题。

  • 写回答

2条回答 默认 最新

  • 元气少女缘结神 2023-01-20 17:07
    关注

    你输入的n是多少?
    i没有初始化,将i=0,再进入while,你while中i始终没变。
    b数组没初始化,用0初始化。
    最后一次打印printf,应该是打印b[i]

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 1月20日

悬赏问题

  • ¥66 换电脑后应用程序报错
  • ¥50 array数据同步问题
  • ¥15 pic16F877a单片机的外部触发中断程序仿真失效
  • ¥15 Matlab插值拟合差分微分规划图论
  • ¥15 keil5 target not created
  • ¥15 C/C++数据与算法请教
  • ¥15 怎么找志同道合的伙伴
  • ¥20 如何让程序ab.eXe自已删除干净硬盘里的本文件自己的ab.eXe文件
  • ¥50 爬虫预算充足,跪巨佬
  • ¥15 滑块验证码拖动问题悬赏