连续正整数的和 C语言 不知道如何处理这个细节

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了连续正整数的和 C语言 不知道如何处理这个细节相关的知识,希望对你有一定的参考价值。

【问题描述】
对于一个正整数x(3≤x≤1000),寻找一种方案,将x分解成连续正整数的和。即
x=x1+x2+……+xn
其中x1、x2、……、xn是自小至大的连续正整数,且n>1。
比如,对于输入的数字10,可以分解成“10=1+2+3+4”。
如果存在多于一种的可行方案,则选取等式右边项的个数最多的那一种。比如,9可以分解为“9=2+3+4”,也可以分解为“9=4+5”。但是前一种分解成3个数的和,后一种分解成2个数的和,所以前一种是有效解。如果无法分解,则输出No Answer。
【样例输入1】
38

【样例输出1】
38=8+9+10+11

【样例输入2】
256

【样例输出2】
No Answer

#include <stdio.h>
main()

int i,j,k,n=0,x,s;
scanf("%d",&x);
for (i=1;i<x/2;i++)

s=i;
k=i;
while(s<x)

k++;
s+=k;

if (s==x)

printf("%d=%d",x,i);
for (j=i+1;j<=k;j++)
printf("+%d",j);
printf("\n");
n++;


if (n==0)
printf("No Answer\n");


错误输出:
250=3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22
250=48+49+50+51+52
250=61+62+63+64
--------------------------------------------------------------------------------
期望输出:
250=3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22

这个错误如何处理?

参考技术A if(s==x),后面的中n++的后面加一句
break;本回答被提问者采纳
参考技术B 在判断条件里加一个&&n!=1 参考技术C 求解释啊~~

C4.5 算法如何处理连续数据?

【中文标题】C4.5 算法如何处理连续数据?【英文标题】:How does the C4.5 Algorithm handle continuous data? 【发布时间】:2013-03-15 19:05:38 【问题描述】:

我在.net 中实现C4.5 algorithm,但是我不清楚它如何处理“连续(数字)数据”。谁能给我更详细的解释?

【问题讨论】:

【参考方案1】:

对于连续数据,C4.5 使用阈值,其中小于阈值的所有内容都位于左侧节点中,而大于阈值的所有内容都位于右侧节点中。问题是如何根据您提供的数据创建该阈值。诀窍是按连续变量升序对数据进行排序。然后迭代数据,在数据成员之间选择一个阈值。例如,如果属性 x 的数据是:

0.5, 1.2, 3.4, 5.4, 6.0

您首先选择一个介于 0.5 和 1.2 之间的阈值。在这种情况下,我们可以只使用平均值:0.85。现在计算你的杂质:

H(x < 0.85) = H(s) - l/N * H(x<0.85) - r/N * H(x>0.85).

其中l是左节点的样本数,r是右节点的样本数,N是被分裂节点的总样本数。在上面的示例中,x>0.85 作为我们的拆分,然后 l=1、r=4 和 N=5。

记住计算出的杂质差,现在计算它以区分 2 和 3(即 x>2.3)。对每个拆分重复此操作(即 n-1 个拆分)。然后选择最小化 H 的分割。这意味着你的分裂应该比不分裂更纯粹。如果您不能增加结果节点的纯度,则不要拆分它。您还可以设置一个最小节点大小,这样您就不会导致左侧或右侧节点仅包含一个样本。

【讨论】:

以上是关于连续正整数的和 C语言 不知道如何处理这个细节的主要内容,如果未能解决你的问题,请参考以下文章

C语言分解质因数

c语言是如何处理除法运算的呀?

编程语言如何处理大数算术

Windows 如何处理无符号 64 位整数?

C语言如何处理RGB信号

如何处理包含离散和连续数据的数据集