小小总结一下
2011-04-11 08:29
295 查看
由于感觉自己的能力很差,都大二了,还什么都不怎么会呢。于是乎~最近重新把c语言的经典100道题翻了出来,做了一下。
结果,真令人心寒。有好多题,看似很简单很简单,可是自己还是一下子写不出来。
看来我是真的需要更多的练习了。
总的来说,做完这些题,自己的收获还是不少的,至少把很多已经遗忘了的小东西都捡了起来。
还需努力,下面进军c++百例。
不过,还是先把这个约瑟夫环的小问题记录一下吧。
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出
圈子,问最后留下的是原来第几号的那位。
解这道题有两种方式,可以用单循环链表做,也可以用数组做。
一、单循环链表
先建立一个单循环链表,并将原始标号存在每个结点里,用n记住,当数到n的时候就删除该结点,最后剩下的,将其编号输出则是它原来在队伍的序号。
二、数组
从1到m初始化数组,当数到n的时候将改为置0,最后数组中不为0 的元素将其输出,则是它在原来队伍中的序号。
结果,真令人心寒。有好多题,看似很简单很简单,可是自己还是一下子写不出来。
看来我是真的需要更多的练习了。
总的来说,做完这些题,自己的收获还是不少的,至少把很多已经遗忘了的小东西都捡了起来。
还需努力,下面进军c++百例。
不过,还是先把这个约瑟夫环的小问题记录一下吧。
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出
圈子,问最后留下的是原来第几号的那位。
解这道题有两种方式,可以用单循环链表做,也可以用数组做。
一、单循环链表
先建立一个单循环链表,并将原始标号存在每个结点里,用n记住,当数到n的时候就删除该结点,最后剩下的,将其编号输出则是它原来在队伍的序号。
#include <iostream> using namespace std; struct list { int th; list *next; }; int main() { list *head=NULL,*rear,*prior,*p; int i; int m,n; /*m:一个有多少个人 n:报数报到几出列*/ cin>>m,n; for(i=0;i<10;i++) { if(head==NULL) { rear=head=new list; } else { rear->next=new list; rear=rear->next; } rear->th=i+1; rear->next=head; } prior=rear; /*用prior记住p的前趋*/ p=head; while(p!=p->next) { n=2; while(n--) { prior=p; p=p->next; } cout<<p->th<<" "; prior->next=p->next; delete p; p=prior->next; } cout<<p->th<<endl; cout<<"最后剩下的人原来的序号是:"<<p->th<<endl; return 0; }
二、数组
从1到m初始化数组,当数到n的时候将改为置0,最后数组中不为0 的元素将其输出,则是它在原来队伍中的序号。
#include <iostream> using namespace std; int main() { int a[10]; int i,m=10; int n=3; for(i=0;i<10;i++) a[i]=i+1; while(m>1) { n=3; while(1) { for(;i<10;i++) if(a[i]!=0) { --n; if(n==0) break; } if(i>=10) i=0; if(n==0) break; } // cout<<i+1<<" "; a[i]=0; --m; } for(i=0;i<10;i++) { if(a[i]!=0) cout<<endl<<"最后剩下的人原来的序号是:"<a[i]<<endl; } return 0; }
相关文章推荐
- 小小的总结一下
- 经常用到取整的函数,今天小小的总结一下!其实很简单,就是几个函数而已~~主要是:ceil,floor,round,intval
- 今天做了一个小小的项目 总结一下。
- 最短路算法(小小总结一下)
- SnippetShare 项目总结连载(二) 刚刚加的分享按钮-小小美化一下
- 【hdu4734】【F(x)】数位dp + 小小的总结一下
- (第二大类)结构型模式 小小总结一下
- 小小的总结一下(记第七届)
- 软件工程课程设计终于告一段落。小小总结一下。
- 小小的总结一下java异常处理和List、ArrayList、Vector、Set、HashSet、TreeSet集合的简单应用
- 小小的总结一下
- 最近做了一个小小的系统,收获挺大的....我想总结一下
- 小小的总结一下网页间传值问题!
- (第一大类)创建类模式 小小总结一下
- 对之前的学习小小的总结一下吧
- 小小的总结一下
- 今天小小的总结一下最近的小程序中的问题
- 年终总结:想的多了就该敷衍性得记录一下
- Ubuntu 14.04小小试用一下
- 总结一下使用Swift遇到的几个小问题和几个小知识点