社区
数据结构与算法
帖子详情
几个面试题请教一下
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, 打印出出列的顺序.
...全文
407
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
作业
写回复
配置赞助广告
用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
面试题
全集(中)
2015年重新整理发布的Java
面试题
全集,这部分主要是与Java Web和Web Service相关的
面试题
。
软件测试
面试题
(全)
其它得
几个
阶段划分 回归测试:是指对软件的新版本测试时,重复执行之前某一个重要版本的所有测试用例目的: 1.验证之前版本产生的所有缺陷已全部被修复; 2.确认修复这些缺陷没有引发新的缺陷 冒烟测试:是指在对...
java初级开发工程师
面试题
(2019.8)
毕业之前回家处理一些事情,结果没有赶上...刚开始面试完全没有什么准备,也不知道该准备些什么,就从网上找的
面试题
,同学给的
面试题
中看题。后来面试了一些公司后,才整理出了一套经常问到的题目,感觉也和网上差...
【JavaScript
面试题
】
面试题
整理一
随手整理的JavaScript
面试题
,有问题望指出
请教
,感谢!
2022最新Android
面试题
(大厂Android中高级
面试题
持续更新~)
例如Handler机制,这个是面试必问之题,虽然实际工作当中你压根不会用到它,但是你要知道它是什么东西。 所以,针对面试官多变细化的提问,想要应付如流,唯一的答案就是平时多注重积累,打牢基础。
数据结构与算法
33,027
社区成员
35,335
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章