回 帖 发 新 帖 刷新版面

主题:[原创]求2道题的解法。是我的培训作业!

1、读入一个算术表达式,以“;”结束,对该表达式中的圆括号是否配对,进行检查,要求:给出正确与错误的信息。若出错还应指出是左括号多于右括号,或是右括号多于左括号,或是先出现了右括号。 
2、有一已排序的数组,现要求输入一个数,要求,按原来的排序规则,将它插入数组中。 
请各位高手给出答案。

回复列表 (共11个回复)

沙发

第二题可以用个偷懒的算法:
就是开个比较大数组,然后把原来已经排好序的N个数存到1..N里,再把要插入的数据存到N+1里,然后把1..N+1进行排序就行了

这样就不用再给要插入的数据来找它的位置了,比较简单,但不是出题者想要你用的算法

程序的代码很简单,不用我写了吧,其实主体也就是个排序的程序

板凳

第一题应该用栈

3 楼

老大啊,我就是不会写,才找大家帮忙的啊。我们就培训了4天,然后就留了这2个作业。其实我连基本的程序都不会写呢。请您把完整的程序写出来好吗?
谢谢,谢谢,谢谢!

4 楼

var
  a:array[1..500] of integer;
  m,n,i,j,k:integer;
begin
  readln(m);
  for i:=1 to m do read(a[i]);
  readln(n);m:=m+1;a[m]:=n;
  for i:=1 to m-1 do 
    for j:=i+1 to m do 
      if a[i]>a[j] then 
        begin 
          k:=a[i];a[i]:=a[j];a[j]:=k;
        end;
  for i:=1 to m do write(a[i],' ');
end. 

5 楼

var 
  s:string;t:char;
  l,i,j,k,l,top:integer;
  a:packed array[1..500] of char;
begin 
  l:=0;
  while not(eoln) do 
    begin 
      read(t);
      if ((t='(') or (t=')')) then 
        begin 
          l:=l+1;s[l]:=t;
        end;
    end;
  for i:=1 to l do
    begin  
      if s[l]='(' then 
        begin 
          top:=top+1;
          a[top]:='(';
        end
       else
         top:=top-1;
      if top<0 then 
        begin 
          writeln('NO');
          exit;
        end;
    end;
  writeln('YES');
end.

6 楼

估计语法上面会有点小问题
但算法应该没有问题的!

7 楼

提示两件事情:
1、加分
2、程序就是要自己去想,自己去做
而不是总是请教别人

8 楼

第一题应该用栈的基本操作就可以实现:遇到一个正括号就入栈,遇到一个反括号就弹出栈顶元素.最后看是否剩余元素就能判断是哪种括号没配对了.

第二题就是简单的插入排序.

9 楼

1.依次从左到右读取字符串中的 字符 如果是'('那么 t=t+1 如果是')'那么t=t-1.每次都判断t 的值如果t 出现负值那么说明先出现了')',如果最后t>0那么说明')'过多.(t 初值为0)
2.依次判断数组中各元素和n的大小插入 如果出现了第i个元素和第i+1个元素和n 的大小关系不一直那么就插到i+1的位置,数组向后移位.
可能出现插在第一个或者最后一个的特殊情况.

ps 4天可以做很多事情了,别人问我我不懂的asp 我看了2小时就给答复了,虽然我到现在还是不很清楚

10 楼

[quote]1.依次从左到右读取字符串中的 字符 如果是'('那么 t=t+1 如果是')'那么t=t-1.每次都判断t 的值如果t 出现负值那么说明先出现了')',如果最后t>0那么说明')'过多.(t 初值为0)
2.依次判断数组中各元素和n的大小插入 如果出现了第i个元素和第i+1个元素和n 的大小关系不一直那么就插到i+1的位置,数组向后移位.
可能出现插在第一个或者最后一个的特殊情况.

ps 4天可以做很多事情了,别人问我我不懂的asp 我看了2小时就给答复了,虽然我到现在还是不很清楚[/quote]

第一个算法不错,不像我那个用栈.既费空间又费时间,呵呵

PS 有程序基础的人4天的确能干很多和程序有关的事情,如果才开始接触程序恐怕没这么容易吧?

我来回复

您尚未登录,请登录后再回复。点此登录或注册