gpt4 book ai didi

c - 输出错误,但为什么呢?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:32:35 26 4
gpt4 key购买 nike

用户会分别给出N,S

如果N的值为3,即我有3个盒子,S的输入为6。然后我以这样的方式编码,在第一种情况下(n=3),1被添加到每个盒子,然后再次(n=2)1被添加到每个盒子(A,B,C)不包括最后一个盒子,再次(n=1)1被添加到每个盒子,除了最后一个盒子以及倒数第二个盒子。
而每个方 block 中剩余球的总数是分配总值S后显示的,

例如:

它看起来像这样,其中 a、b、c 是 3 个框。n=3 和 s=6

A B C
1 1 1
1 1
1
-----
3 2 1 //output to be displayed

如果 n 和 s 的输入分别是 4 和 9那么输出将是,

A B C D
1 1 1 1
1 1 1
1 1
-------
3 3 2 1 //output to be displayed

如果 n 和 s 的输入分别是 3 和 4那么输出将是,

A B C D
1 1 1 1
1
-------
2 1 1 1 //output to be displayed

如果 n 和 s 的输入分别是 4 和 2那么输出将是,

A B C D
1 1
-------
1 1 0 0 //output to be displayed

对于 s = n*(n+1)/2 的 n 个最大值

实际上在这种情况下,代码的复杂度不可能是 O(n^2)。所以这是我的代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
int n,i,j,s,y,x1;
scanf("%d%d",&n,&s);
int b[n];
memset(b,0,n);
x1=n;
j=0;
while(s>0)
{
y=j%n;
if(j!=n-1)
{
b[y]++;
s--;
j++;
}
else
{
b[y]++;
s--;
j=0;
n--;
}
}
for(i=0;i<x1;++i)
{
printf("%d ",b[i]);
}
return 0;
}

但是执行代码后,我的代码给出的输出是:

where n = 4 and s = 9
the output is : 3 32631 -747449654 32629

where n = 3 and s = 5
the output is :2 2 4195586

为什么会这样?我不想使用嵌套 for 循环!但是这里有什么问题吗?请帮助我!

最佳答案

void * memset ( void * ptr, int value, size_t num );

num是字节数,所以

memset(b,0,n);

应该是

memset(b,0,n*sizeof(int));

Live Demo

关于c - 输出错误,但为什么呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28465215/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com