研究生题目啊,看看大家谁做出来

rdtt 2001-11-18 11:00:57



一个int a[10](数据无重复),另外一个int b[10]元素和a一样元素位置不一样
怎么知道b是否是a 通过栈而得 要求c算法
当时我出着题的时候好多考生没做出来,唉为此主任还说了我几
...全文
322 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
starfish 2001-11-24
  • 打赏
  • 举报
回复
把硬盘拆下来,在另一个操作系统上写入:)
或者用软盘引导,然后用debug写入
mathe 2001-11-24
  • 打赏
  • 举报
回复
软盘引导,就可以运行这个代码了,没必要用debug写入了。
SoftWare1999 2001-11-24
  • 打赏
  • 举报
回复
boolean check() {
int max = min = b[0];
for (int i = 1; i < n; i++) {
if (b[i] > min && b[i] < max) return false;
if (b[i] > max) { max = b[i]; min = b[i]; }
if (b[i] > min) min = b[i];
}
return true;
}

function check:boolean;
var
max,min,k:integer;
begin
max:=b[0]; min:=b[0];
for k:=1 to n-1 do begin
if (b[k]>min) and (b[k]<max) then begin
check:=false;
exit;
end;
if min>b[k] then min:=b[k];
if max<b[k] then begin
max:=b[k]; min:=b[k];
end;
end;
check:=true;
end; 这次不要效率了。
rdtt 2001-11-23
  • 打赏
  • 举报
回复
其实a[10]不一定是单调的啊
wangqiqi 2001-11-23
  • 打赏
  • 举报
回复
starfish,“我的想法是将程序的机器码写到硬盘的引导区,因为计算机引导的时候主板的BIOS会将CPU的控制权转移给硬盘引导区的程序代码段,然后由那一段代码引导操作系统,既然现在没有操作系统,就直接让那一段代码执行程序。 ”
但是你用什么方法把机器码写到硬盘的引导区?不用操作系统?
allanic 2001-11-23
  • 打赏
  • 举报
回复
不过又发现我的程序有问题,漏掉一种情况。
laozi 2001-11-23
  • 打赏
  • 举报
回复
to allanic(阿伦):
对,就是这个思路,你的算法比我简洁.
allanic 2001-11-22
  • 打赏
  • 举报
回复
不要意思,刚才改到一半不当心提交了
boolean check() {
int max = b[0];
for (int i = 1; i < n; i++) {
if (b[i] > b[i - 1] && b[i] < max) return false;
if (b[i] > max) max = b[i];
}
return true;
}
allanic 2001-11-22
  • 打赏
  • 举报
回复
如果简化一下问题,假设a数组的值是0..n-1,从小到大。
那么
boolean check() {
int max = b[0];
for (int i = 1; i < n; i++) {
if (b[i] > b[i - 1]) {
if (b[i] > max) {
max = b[i];
return false;
if (b[i] > max) max = b[i];
}
return true;
}
基本思想是如果b中出现过x,那么比x小的数字只可能从大到小输出。
我这个想法可以吗?
starfish 2001-11-22
  • 打赏
  • 举报
回复
wangqiqi,我的想法是将程序的机器码写到硬盘的引导区,因为计算机引导的时候主板的BIOS会将CPU的控制权转移给硬盘引导区的程序代码段,然后由那一段代码引导操作系统,既然现在没有操作系统,就直接让那一段代码执行程序。
vince_xu 2001-11-22
  • 打赏
  • 举报
回复
starfish牛阿,为什么自己就想不到呢?

都是境界的问题啊
wangqiqi 2001-11-22
  • 打赏
  • 举报
回复
starfish : “该题目是:如果有一台计算机,没有安装操作系统,但是你有一段程序需要执行,应该怎么办?(这是问我的同学的,很有意思:)
怎么办?我想不出来。要是我的话我就临时安装操作系统。
AP 2001-11-22
  • 打赏
  • 举报
回复
多麽混账的问题 b 怎麽会是 a 呢?
nofog 2001-11-21
  • 打赏
  • 举报
回复
to laozi: 一般的组合数学书上都有catalan数的

一个中序遍历的序列可以确定的二叉树的个数就是 catalan数个(证明很简单)
n条边的二叉树有catalan数个
n+1个叶子的二叉树有catalan数个
n-1
C(n)=Σ C(i)C(n-i)
i=1

1 2n
C(n)=—-( )
n+1 n
starfish 2001-11-20
  • 打赏
  • 举报
回复
这个够简洁了吧,呵呵
starfish 2001-11-20
  • 打赏
  • 举报
回复
#include <iostream.h>
const int N = 10;

// 判断B是否是通过A压栈出栈得到
bool Judge(int* A, int * B)
{
int stack[N], top = 0, j = 0;

for( int i = 0; i < N; i++) {
if ( top > 0 && stack[top-1] == B[i] ) top--;
else {
while( ( j < N ) && ( A[j] != B[i] ) ) stack[top++] = A[j++];
if( j == N) return false; else j++;
}
}
return true;
}


int main()
{
int A[N], B[N];
int i;
cout << "input A: " << endl;
for(i = 0; i < N; i++) {
cin >> A[i];
}
cout << "input B: " << endl;
for(i = 0; i < N; i++) {
cin >> B[i];
}
if( Judge(A, B) ) {
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
return 0;
}
nofog 2001-11-20
  • 打赏
  • 举报
回复
不过上数据结构的时候,老师说过好像是和中序遍历有关。
~~~~~~~~~~~~
是啊,
树的计数,串的进栈出栈,矩阵相乘,凸多边形分割
还有(0,0)点到(x,y)点不超过x=y的路径数
都是等价的catalan数
starfish 2001-11-20
  • 打赏
  • 举报
回复
to: rdtt(平川的马) 
如果可以压栈的话 我还出来干什么呢?
~~~~~~~~~~~~~~~ 难道不可以用堆栈?只要利用一个堆栈,然后从头到尾扫描b数组一遍就够了,a数组的压栈出栈操作根据b数组当前被扫描的值来决定。
rdtt 2001-11-20
  • 打赏
  • 举报
回复
唉 有时候 老师也会出错题目,不过有能力不关怎么样还是能做出来的
大家不要怪我
seastar 好样
不过现在也不做老师了
下海了 不过出来工作也不容易啊
laozi 2001-11-20
  • 打赏
  • 举报
回复
还是斑竹厉害,不过上数据结构的时候,老师说过好像是和中序遍历有关。
加载更多回复(17)

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧