PDA

View Full Version : Mã hóa xâu



lehang_gb1
22-07-2009, 22:16
Viết chương trình nhập vào xâu và mã hoá:
VD:
Mahoa.Inp
Ha Noi
8610510111632789109
Mahoa.Out
72973278111105
Viet Nam

quangtq
22-07-2009, 22:38
Sax. Phải biết là mã hóa như thế nào chứ. Đọc cái vd không hiểu.

nhat_truong
23-07-2009, 00:16
Có phải đây là mã hóa theo bộ mã ASCII?
Mà test sai kìa, HaNoi và VietNam phải có dấu cách ở giữa: Ha Noi, Viet Nam thì mới mã hóa thế kia được.
Mã hóa xuôi thì dễ thôi, nhưng ngược lại thì hơi khó, tui chưa nghĩ ra

bld
23-07-2009, 08:05
quay lui
......................................

hang_vt
23-07-2009, 13:03
vẫn k hỉu đề , ai giảng dùm ik :(

quangtq
23-07-2009, 15:42
vẫn k hỉu đề , ai giảng dùm ik :(
Em cũng chả hiểu. Về cái đoạn mã hóa này mình ngu.

bld
23-07-2009, 16:49
bài này mã hóa theo ASCII
xâu ABCD mã hóa thành 65666768 , ... ngược lại thì buộc phải quay lui

quangtq
23-07-2009, 16:53
Tưởng Ascii các chữ đều chỉ >=99 và <=10.
Cứ 2 số 1 ta giải ra.

hang_vt
23-07-2009, 21:28
hình như Q nhầm
"A" -> "Z" : 65 -> 90
"a" -> "z" : 97 -> 122

quangtq
23-07-2009, 22:32
Thế à chị? Thanks. Em quên bảng ascii.
Thế thì phải xét 3 cái. Nếu không thấy ra chữ thì ta xét 2 cái trước.
Cứ như vậy

bld
24-07-2009, 08:33
làm thử bằng tay với test của đề thử xem quang :) nghe mù mờ quá

DO DONG HIEN
24-07-2009, 09:24
phải nói rõ dùng thuật toán nào để mã hóa thì mới viết được ct chứ.Bó tay.

hang_vt
24-07-2009, 09:37
const fi='mahoa.inp';
fo='mahoa.out';
so:set of char=['0'..'9'];
chu:set of char=['a'..'b','A'..'Z',' '];

var f,g:text;
s:string;
j:byte;

function kt(s:string):boolean;
var i:byte;
begin
kt:=false;
for i:=1 to length(s) do
if not (s[i] in so) then exit;
kt:=true;
end;

function mahoachu(s:string):string;
var s1,s2:string;
i:byte;
begin
s1:='';
for i:=1 to length(s) do
begin
str(ord(s[i]),s2);
s1:=s1+s2;
end;
mahoachu:=s1;
end;

function tach(j,k:byte):char;
var s1:string;
mso,err:byte;
begin
s1:='';
repeat
dec(k);
s1:=s1+s[j];
inc(j);
until k=0;
val(s1,mso,err);
if err=0 then tach:=chr(mso);
end;

function mahoaso(s:string):string;
var s1:string;
begin
s1:='';
j:=0;
repeat
inc(j);
if (tach(j,2) in chu) then
begin
s1:=s1+tach(j,2);
inc(j);
end
else
begin
s1:=s1+tach(j,3);
inc(j,2);
end;
until j>length(s);
mahoaso:=s1;
end;

procedure inp;
begin
assign(f,fi);reset(f);
assign(g,fo);rewrite(g);
while not eof(f) do
begin
readln(f,s);
if not kt(s) then writeln(g,mahoachu(s))
else writeln(g,mahoaso(s));
end;
close(f);close(g);
end;

begin
inp;
end.


[=========> Bổ sung bài viết <=========]

cùng ý tưởng vs Q :)

quangtq
24-07-2009, 11:00
Ahaha. Thanks pà chị. Có người cùng ý tưởng. Vui :D
Mình thấy có gì đâu nhỉ. Kể cả là số cũng đến 2 chữ số trong ascii thôi.
Xét 3 cái mà không ra chữ, số hay space thì xét 2 cái.
Mình ko thấy sai ở đâu cả

bld
24-07-2009, 11:26
bạn cho ví dụ làm = tay đi ^^, nói vẫn chưa hiểu

quangtq
24-07-2009, 15:39
Ví dụ
efgh ABCD1234
Thì mã hóa ra là
101102103104326566676849505152
Xét 3 cái đầu là 101 -> e
Cứ thế xét đến cái sau 104 là 326 -> Ko ra chữ, số hay space -> xét 32
Thấy ra space
Xét tiếp 656 -> ko ra -> 65 -> A
Cứ thế

bld
25-07-2009, 20:55
ra vậy ^^, mình nghĩ là quay lui nhưng làm như vậy sẽ rất dở ;p
thế này 1111 có thể tách thành 4 số 1 , 2 số 11 hoặc 1 số 111 , 1 số 1
co nhiều cách tách nhỉ ^^

quangtq
25-07-2009, 21:11
Mình gà nên luôn tìm cách đơn giản, không cao siêu.
Thứ tự ưu tiên của mình là: Ko có gì -> Đệ quy -> Đồ thị -> QHĐ
:D
Cái gì kém nhất để ở cuối.
Nhưng tất nhiên những bài thấy có khả năng QHĐ được thì làm luôn

bld
25-07-2009, 21:13
về Đồ thị quang biết rất nhiều , đã đọc đến đồ thị hai phía , phần công rồi à ? nhanh quá ! mình sau khi thi xong THT là mình có thể bị cho give up môn programming luôn ;p, vì học toán mà ^^

quangtq
25-07-2009, 22:24
Uhm. Hôm qua mấy cô giáo xuống động viên đi thi.
Bảo là năm lớp 9 phải học cật lực vì giải gì cũng đổ lên đầu mình.
Thiệt là mệt quá.
Bình thường thui. Mình chỉ hiểu nhất là BFS, DFS, loang, Tìm đường (trừ Tô-pô), Prim và Hungary.

bld
28-07-2009, 15:38
topo cũng vậy thôi, làm theo kiểu ford bellman , nhưng đánh dấu lại thì số đỉnh phải xét đến ít hơn nhiều , vì chỉ có đỉnh nhỏ đi đến đỉnh lớn.