天天看点

拆分数字

主要是要求限制   

a. 全部codes 在 main ()

b. 不能用2D-ARRAY   

c. 不能用recursion

老师要求我们用 (brute force 的笨方法来做 就是用nested loop)

=======

(我不是想你们帮我做作业,, 但我真的想不到 不用recursion 不用2d-array 要怎么做。。。)

有人会做不?

 要求如下:

Create a function that writes a positive integer n as the sum of positive integers.   

To avoid printing the same solution multiple times,   

generate only the ordered solutions, as shown below:

n = 3

1: 1 1 1   

2: 1 2 // 2 1 is considered the same solution

3: 3

n = 5

1: 1 1 1 1 1

2: 1 1 1 2

3: 1 1 3

4: 1 2 2

5: 1 4

6: 2 3

7: 5

Test driver: In main() write a loop (press 0 to stop) to prompt the user for n (validation included: it must be a number, and it must be positive!) then find all ordered solutions. Once you find a solution, print it.

#include <stdio.h>

void main()

{

int n,i=0,j=0,t=0;

printf("Input the n/n");

scanf("%d",&n);

int len=n/2+1;

for(i=1;i<len;i++)

{

int k=n/i;

for(j=1;j<k+1;j++)

{

for(t=0;t<j;t++)

{

printf("%d ",i);

}

if((n-t*i)!=0)

{

printf("%d",n-t*i);

}

printf("/n");

if(n-t*i==i)

break;

}

}

printf("%d/n",n);

}

继续阅读