Tin học Ghi số

Nickersociker

Học sinh mới
Thành viên
3 Tháng ba 2019
7
0
1
19
Bình Định
Trường THPT Nguyễn Trân
[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

Cho xâu S chỉ chứa các dấu < > = . Tìm số nguyên dương P nhỏ nhất sao cho ta có thể điền các số nguyên dương trong đoạn [1..P] vào dãy dấu trên sao cho mỗi dấu đều có 2 số kề bên và dãy số được điền vào là dãy đúng.
  • Vd: Dãy dấu <<< thì dãy sau khi tìm là
  • 1<2<3<4; P=4.
  • Dãy <=> thì dãy sau khi điền là:
  • 1<2=2>1; P=2
Viết chương trình xác định số nguyên dương P.

ghiso.inpghiso.out
2
<<<<
<=>
<<<
4
2
4
[TBODY] [/TBODY]

Các bạn giúp mình thuật toán bài này với :)
 

Trâm Nguyễn Thị Ngọc

Giải Nhất event Thế giới Sinh học 2
Thành viên
13 Tháng mười 2018
1,523
1,339
216
18
Quảng Trị
Trường TH&THCS Hải Ba
Cho xâu S chỉ chứa các dấu < > = . Tìm số nguyên dương P nhỏ nhất sao cho ta có thể điền các số nguyên dương trong đoạn [1..P] vào dãy dấu trên sao cho mỗi dấu đều có 2 số kề bên và dãy số được điền vào là dãy đúng.
  • Vd: Dãy dấu <<< thì dãy sau khi tìm là
  • 1<2<3<4; P=4.
  • Dãy <=> thì dãy sau khi điền là:
  • 1<2=2>1; P=2
Viết chương trình xác định số nguyên dương P.

ghiso.inpghiso.out
2
<<<<
<=>
<<<
4
2
4
[TBODY] [/TBODY]
Các bạn giúp mình thuật toán bài này với :)
Mã:
Var
 s:string;
 fi,fo:text;
 i,k:integer;
Begin
 assign(fi,'ghiso.inp');reset(fi);
 assign(fo,'ghiso.out');rewrite(fo);
 read(fi,s);s:='1'+s;k:=1;
 For i:=2 to length(s) do
  if s[i]='<' then
   begin
     k:=k+1;
     Str(k,st);
     Insert(st,s,i+1);
     length(s):=length(s)+1;
   end
 else if s[i]='=' then
  begin
   Str(k,st);
   Insert(st,s,i+1);
    length(s):=length(s)+1;
   end
  else  if  s[i]='>' then
    begin
     k:=k-1;Str(k,st);
     Insert(st,s,i+1);
    length(s):=length(s)+1;
    end;
write(fo,s);
Close(fi);close(fo);
End.
 
Last edited:

Deathheart

Cựu TMod Vật Lí
Thành viên
18 Tháng năm 2018
1,535
2,868
411
Quảng Trị
THPT Đông Hà
Mã:
Var
 s:string;
 fi,fo:text;
 i,k:integer;
Begin
 assign(fi,'ghiso.inp');reset(fi);
 assign(fo,'ghiso.out');rewrite(fo);
 read(fi,s);s:='1'+s;k:=1;
 For i:=2 to length(s) do
  if s[i]='<' then
   begin
     k:=k+1;
     Str(k,st);
     Insert(st,s,i+1);
     length(s):=length(s)+1;
   end
 else if s[i]='=' then
  begin
   Str(k,st);
   Insert(st,s,i+1);
    length(s):=length(s)+1;
   end
  else  if  s[i]='>' then
    begin
     k:=k-1;Str(k,st);
     Insert(st,s,i+1);
    length(s):=length(s)+1;
    end;
write(fo,s);
Close(fi);close(fo);
End.
bạn làm rất đúng nhưng mình có ý kiến như thế này: nếu dãy S là >>>> nếu thế trong code của bạn sẽ là: 1>0>-1>-2>-3 mà trong đề lại là dãy[1..P]
 

Trâm Nguyễn Thị Ngọc

Giải Nhất event Thế giới Sinh học 2
Thành viên
13 Tháng mười 2018
1,523
1,339
216
18
Quảng Trị
Trường TH&THCS Hải Ba
bạn làm rất đúng nhưng mình có ý kiến như thế này: nếu dãy S là >>>> nếu thế trong code của bạn sẽ là: 1>0>-1>-2>-3 mà trong đề lại là dãy[1..P]
em vẫn chưa test trên máy, hôm đó mắc học sử nên làm thẳng vào HMF luôn ạ. Chắc phải sửa lại đã
 
  • Like
Reactions: Deathheart
Top Bottom