标题:[讨论]写数据结构报告的程序可以少于二十行吗?
只看楼主
杨杨
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2006-5-29
 问题点数:0 回复次数:3 
[讨论]写数据结构报告的程序可以少于二十行吗?


就如下这个纸牌游戏程序:
#include<stdio.h>
#define N 52

void main()
{
int card[N+1];/*牌的状态:1正面朝上,-1反面朝上*/
int i,j,n;
for(i=1;i<=N;i++) card[i]=1;/*初始化,全部正面向上*/
for(i=2;i<=N;i++)/*翻牌过程*/
{
for(j=1;;j++)
{
if((n=i*j)>=N) break;
card[n]=-1*card[n];
}
}
for(i=1;i<=N;i++)/*输出正面朝上的牌*/
if(card[i]==1) printf("%d ",i);
}

搜索更多相关主题的帖子: 数据结构 纸牌游戏 void 
2006-05-29 18:24
starrysky
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
得分:0 

哈哈,想当年我交实验报告的时候(其时就是去年拉),我的那个程序只有17行(其实是很简单的约瑟夫环拉),不过我们要交3个程序,最短的是那个约瑟夫环,最长的那个对树的各种操作有近千行,不过这3个程序得分都差不多。为什么呢?是不是觉得给分很不合理?
那我们来看看那个约瑟夫环的问题:
******************
编序为1,2,...n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数),一开始人选一个整数作为报数上限m,从第一个人开始按顺时针方向从自1开始顺序报数,报到m时停止报数.报m的人出列,将他的密码作为新的m值,从他的顺时针方向上的下一个人开始从1报数,如此下去,知道所有人全部出列为止,设计一个程序求出出列顺序.
采用单循环链表模拟此程序,按照出列的顺序印出各人的编号
测试数据:m的初值为20;n=7,7个人的密码依次为3,1,7,2,4,8,4.首先m的值为6(正确的出列顺序为6,1,4,7,2,3,5))
******************
这个问题的确非常简单,建个单向链表再用个for循环就可以搞定了,很多人就是这样做的,这样做的人全都及格了。而我的程序只比他们多写了一句m=m%n(n为当前剩下的人数,取m除以n的余数实际上就是对运算进行了化简,减少了运算量,提高了程序的效率),结果我比那些及格的人高了30分。实际上求余才是约瑟夫环的真正考点。数据结构不是来教你编程的,而是来教你怎么编好程的,考的不是你的编程能力,而是你的思想。思考方法,思维方向才是数据结构的真正重点。所以实验报告的好坏并不在于你的程序的长短,而在于你的程序反映出的你的编程算法是否最优。就象C语言中最经典的例子“HELLO WORLD"一样,最好的并不一定要最长。
,一不小心说了这么多,希望楼主不要嫌我罗索啊


我的征途是星辰大海
2006-05-29 23:22
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
得分:0 
版主强啊,佩服佩服!

2006-05-30 10:31
杨杨
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2006-5-29
得分:0 
当然不会啦!很感谢你的意见啊!!!谢谢~~~~

不是每个人一生出来就什么都懂!所以我不懂就会问!——这就是我来这里的原因!!
2006-05-30 12:03



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-68334-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.050025 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved