社区
数据结构与算法
帖子详情
几个面试题请教一下
zhaoxjpig
2004-12-17 11:45:21
1. 编写一个递归函数, 使之能输出下图所示结果:
1
1 2 1
1 2 3 2 1
1 2 3 4 3 2 1
1 2 3 4 5 4 3 2 1
2.设有n个人依次围成一圈, 从第1个人开始报数, 数到第m个人出列, 然后从出列的下一个人开始报数, 数到第m个人又出列, …, 如此反复到所有的人全部出列为止. 设n 个人的编号分别为1, 2, …, n, 打印出出列的顺序.
...全文
401
14
打赏
收藏
几个面试题请教一下
1. 编写一个递归函数, 使之能输出下图所示结果: 1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1 1 2 3 4 5 4 3 2 1 2.设有n个人依次围成一圈, 从第1个人开始报数, 数到第m个人出列, 然后从出列的下一个人开始报数, 数到第m个人又出列, …, 如此反复到所有的人全部出列为止. 设n 个人的编号分别为1, 2, …, n, 打印出出列的顺序.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
billazw
2005-04-23
打赏
举报
回复
什么公司出这样的题哟??
哈哈 晕了
penghongxia
2005-01-05
打赏
举报
回复
[第二道题目]
刚刚帮你写了一个,完全是凭兴趣,我这里没C编辑器,没调试,你自己去调试看看,应该没什么问题。
#include<stdio.h>
#define n 50;
main()
{
int i,j=0; //j 用来标志出列的数的个数
int a[n]; //n 个数用数组存放,其中a[0]没用
int m=3; //这里定m为3,你可以改成你要的数
int c=1; //C用来记a[i]的前面一个没出列的数值
a[0]=0;
do
for (i=1;i<=n;i++)
{if (a[i]<>0) //a[i]=0,说明该元素已经出列
{a[i]=c+1;
if(a[i]%m==0)
{a[i]=0; //出列的元素值用0来标志。
j++;
printf("%d\n",i);
}
else
c=a[i];
}
}
while(j<n) //j=n时,数列全部出列
}
Popo_CN
2005-01-05
打赏
举报
回复
/*一寺?有和尚一百,午?是一百个??,?人一个已立了?矩,雷打不?。某日??,一外来
云游和尚来??,寺主持既不想破寺内?矩,又不想破出家人允?化?的?矩,出招:全
部101个和尚排一大?圈,他?1然后向下一个方向?数,?到100者出列,取一??入?就餐,
?100的下一位(原第101)即从1?始第二??数。一百个百后肯定?剩一人,居然正是那
位云游和尚。?:初始?主持把他排在第几位?
*/
#include <stdio.h>
#define MAXCOUNT 100
#define COUNTNUM 100
struct node{
int num;
struct node *next;
};
int main(){
struct node *ph,*p1,*p2,*p3;
ph = p1 = p2 = p3 = (struct node *)malloc(sizeof(struct node));
int i;
int j = 1;
int k = 1;
/*create*/
for (i = 0;i < MAXCOUNT + 1;i++){
p1->num = i+1;
if(i != MAXCOUNT){
p2 = (struct node *)malloc(sizeof(struct node));
p2->next = NULL;
p1->next = p2;
p1 = p2;
}else{
p1->next = ph;
}
}
/*free*/
while(p3->next != p3){
if(j == COUNTNUM - 1){
struct node *pt;
j = 1;
pt = p3->next;
p3->next = p3->next->next;
p3 = p3->next;
printf("%d -->out No:%d\n",k,pt->num);
k++;
free(pt);
}else{
j++;
p3 = p3->next;
}
}
/*result*/
printf("The Result is No:%d\n",p3->num);
free(p3);
getchar();
return 0;
}
mxfeng
2005-01-04
打赏
举报
回复
。
dailiangren
2005-01-03
打赏
举报
回复
我解答的第一个,是用递推的想法解答的,但写起来好象是递归的形式。
我不大懂这些东西该怎么理解,期盼大家给我解疑。
# include<iostream.h>
void p(int n)
{
if(n==0) return;
for(int i=0;i<=n;i++)
cout<<" ";
for(int j=1;j<=5-n;j++)
cout<<j;
for(int k=6-n;k>=1;k--)
cout<<k;
cout<<endl;
p(n-1);
}
main()
{
p(5);
}
xiaosong8584
2004-12-21
打赏
举报
回复
up
aaalife
2004-12-20
打赏
举报
回复
晕死
这是面试题吗?考二级的都会唉~~~~~~
哪家公司,说来听听
:)
Oldman
2004-12-19
打赏
举报
回复
此C语言课本上去找吧
rickone
2004-12-19
打赏
举报
回复
第一个容易啊,用分治的思想,大问题分成若干个相似的小问题:
#include <stdio.h>
void mygraph(int n)
{
if(n==1)printf(" 1\n");
else
{
mygraph(n-1);
for(int i=1;i<=5-n;++i)printf(" ");
for(i=1;i<=n;++i)printf("%d",i);
for(i=n-1;i>0;--i)printf("%d",i);
printf("\n");
}//else
}//mygraph
void main()
{
mygraph(5);
}
aaasng
2004-12-19
打赏
举报
回复
第一个
#include <stdio.h>
int n = 0;
void foo(int j, int k)
{
int i;
if (k <= n)
{
for (i=0; i<j; i++)
printf(" ");
for (i=1; i<=k; i++)
printf("%d ", i);
for (i=k-1; i>=1; i--)
printf("%d ", i);
printf("\n");
foo(j-2, k+1);
}
}
void main()
{
scanf("%d", &n);
foo((n-1)*2, 1);
}
尹立
2004-12-18
打赏
举报
回复
第2个题目是以前学数据结构时做的第一个题目 用c语言写的 你看看吧~~
我刚刚写了注释~~要是看不懂 再告诉我
#include<stdio.h>
#include<malloc.h>
#include<conio.h>
typedef struct Note{
int i;
int j;
struct Node *next;
}NODE;
void main()
{
int i,j,n,k,m,t;
NODE *head;
NODE *p,*q,*s;
scanf("%d",&n); //输入人的个数;
head=(NODE*)malloc(sizeof(NODE));//申请一个头接点;
if(head==NULL)
{ printf("The memory is not allocated!");
return ;
}
q=head;
for(i=1;i<=n;i++) //开始输入密码;
{
p=(NODE*)malloc(sizeof(NODE));
if(p==NULL) return;
scanf("%d",&j);
p->i=i; //把编号送给人
p->j=j; //把密码送给人
q->next=p; //建立链表
q=q->next;
}
head=head->next; //清除空的头指针;
q->next=head;
p=head;
m=p->j;
for(k=1;k<n;k++) //开始循环;
{
t=1;
while(t<m) //找到所需要的位置,并把这个接点删除;然后继续往下找;
{
t++;
p=p->next;
}
s=p->next;
p->next=s->next;
m=s->j;
printf("%4d\n",s->i);
free(s);
}
printf("The lastest monkey is %d\n",p->i); //这是留下的最后的一个接点;
}
jp1984
2004-12-18
打赏
举报
回复
第一个用递归还真不是很容易想。
第二个就不要说了,Josephus 。。构造法 或者 递归。。。
qrlvls
2004-12-17
打赏
举报
回复
作业吧?
lyjpenny
2004-12-17
打赏
举报
回复
既然是作业就不要拿上来问了,随便找个高手搞定算啦.
Java高频
面试题
【课程介绍】 很多人面试前都会罗各种
面试题
。这些面试资料数量众多,但内容杂,系统性不强。最重要的是很多知识点如果不结合讲解,有些重点内容理解的难度偏大。如果下一次遇到面试,又要重新搜集资料,很多知识要...
Java
面试题
全集(中)
2015年重新整理发布的Java
面试题
全集,这部分主要是与Java Web和Web Service相关的
面试题
。
软件测试
面试题
(全)
其它得
几个
阶段划分 回归测试:是指对软件的新版本测试时,重复执行之前某一个重要版本的所有测试用例目的: 1.验证之前版本产生的所有缺陷已全部被修复; 2.确认修复这些缺陷没有引发新的缺陷 冒烟测试:是指在对...
java初级开发工程师
面试题
(2019.8)
毕业之前回家处理一些事情,结果没有赶上...刚开始面试完全没有什么准备,也不知道该准备些什么,就从网上找的
面试题
,同学给的
面试题
中看题。后来面试了一些公司后,才整理出了一套经常问到的题目,感觉也和网上差...
Flink
面试题
整理,全是干货,自己整理的
俗话说,金九银十,为了帮助广大同行面试准备,或者帮助想要了解Flink的同学带着问题思考去学习Flink,我先做了一个初步的
面试题
汇总,这些
面试题
有些是大家问的比较多的,有些是自己遇到的,有些是在群里面大家问...
数据结构与算法
33,007
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章