宇宙的疯子 2022-10-31 23:58 采纳率: 66.7%
浏览 47

正整数的最优分解问题

img

#include<stdio.h>
#include<math.h>
int main()
{
int n,j,t=0,z;
double a,i;
int b[t];
scanf("%d",&n);
j=n%2;
n/=2;
if(j==1)
{
printf("-1");
}
else
{for(i=1;n!=0;i++)
{
j=n%2;
n/=2;
a=(pow(2,i))*j;
if(a!=0)
{
t++;
b[t]=a;}
}
for(z=t;z>0;z--)
{
printf("%d ",b[z]);
}}
return 0;
}
我的这个代码数据到26就出错了,这个怎么解决尼?
提交显示是75分。

  • 写回答

1条回答 默认 最新

  • 宇宙的疯子 2022-11-01 08:21
    关注

    这个题n是有范围的,可知数组里最多有20个数,所以只需要把int b[t],改成int b[任意大于等于20的数],就可以运行;至于为什么变长数组不能实现,我还是不懂

    评论 编辑记录

报告相同问题?

问题事件

  • 修改了问题 11月1日
  • 创建了问题 10月31日

悬赏问题

  • ¥15 SQL查询语句报错(检查)
  • ¥15 此表中公式应该怎么写
  • ¥15 求HI-TECH PICC 9.50 PL3安装包
  • ¥15 在Windows中运行ollama出现运行缓慢的情况
  • ¥15 下载ctorch报错,求解
  • ¥15 如何将这段css代码应用于wordpress的elementor的单个小部件中显示,而不是整个网站全局显示。
  • ¥15 如何入门学习c语言,单片机
  • ¥15 idea 编辑语言的选择
  • ¥15 Windows下部署Asmjit
  • ¥15 请问双层规划模型的上下层目标函数不一致,是如何保证迭代收敛性的