《C语言名题精选百则----12》

今天写程序明白一点,有时候把结果分析出来,找找规律,写的时候才容易写。

这个又没写出来,我还沉浸在上个程序当中,企图用01序列把这些写出来。

应该是可以写出来的,只是我没找到什么规律。

还是看题目和标准答案吧:



这里有些特殊,先看运行结果:



再来说答案,我把这个答案研究了好长时间,不知道是讲得不是很好还是我的理解力还跟不上。。。

后来看了结果,才明白里面讲的规律,大家仔细观察规律,想想自己能不能写出来。


标准答案:(源码无法正常显示的话就点击右键->查看源文件)

#define LOOP 1

int main()
{
	int set[MAXSIZE] = {0};
	int n,i;
	int position;
	char line[100];
	
	gets(line);
	n = atoi(line);
	printf("\n{}");
	position = 0;
	set[position] = 1;
	while(LOOP)
	{
		printf("\n{%d",set[0]);
		for(i = 1;i <= position;i++)
			printf(",%d",set[i]);
		printf("}");
		
		if(set[position] < n)
		{
			set[position + 1] = set[position] + 1;
			position ++;
		}
		else if(position != 0)
			set[--position]++;
		else
			break;
	}
}

总结一句话,要想解题,必须很好的理解题目中的字典顺序是什么意思。

最后是一点小插曲,有个地方敲错了,结果却出了一个很文艺的结果:



哈哈。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章