题目解答,大侠们,来帮忙吧
4、由键盘键入一个整数n(<=1000),再在屏幕上输出满足如下条件的全部数组(每个数组的元素按顺序放在一个括号内)及数组的个数T(n)。(1)同一数组内个元素互不相同。
(2)每个数组至少有一个元素,最后一个元素均为n,且每个元素都不小于它前面的一个元素的平方。
例如:键入n=5,则正确的输出应为:
(5)(1,5)(2,5)(1,2,5)
T(n)=4
请写出完整的源程序。
/*本人也是一个菜鸟!仅供参考!*/ #include<stdio.h> #include<math.h> #define M 10 int num=0; int main() { int s,i,j,k,a,b=1; int p[M]; printf("Please input a number:"); scanf("%d",&s); a=(int) floor(sqrt(s)); p[0]=s; p[1]=a; printf("(%d)\n",s); num++; if(s==2||s==3) printf("(1,%d)",s); else { for(i=1;a>=2;i++) { for(j=1;j<=a;j++) { printf("(%d",j); for(k=b-1;k>=0;k--) printf(",%d",p[k]); printf(")\n"); num++; } if(a==2||a==3) { printf("(1"); for(k=b;k>=0;k--) printf(",%d",p[k]); printf(")\n"); num++; } a=(int) floor(sqrt(a)); b++; p[b]=a; } } printf("Total:%d",num); getch(); return 1; }