Hướng dẫn giải của Chat chit
Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Lưu ý: Các code mẫu dưới đây chỉ mang tính tham khảo và có thể không AC được bài tập này
Code mẫu của flashmt
const a:array[1..13] of string[3]=('k','ko','ng','n','dc','hok','ntn','kq','j','w','f','dz','z'); b:array[1..13] of string[11]=('khong','khong','nguoi','nhieu','duoc','khong','nhu the nao', 'ket qua','gi','qu','ph','d','d'); var s,s1:string; i,j:byte; c1,c2:char; begin read(s); for i:=1 to 13 do begin s1:=s; j:=pos(a[i],s1); while j<>0 do begin c1:=s[j+length(a[i])]; c2:=s[j-1]; if ((ord(c1)<97) or (ord(c1)>122)) and ((ord(c2)<97) or (ord(c2)>122)) or (i>8) then begin delete(s,j,length(a[i])); insert(b[i],s,j); delete(s1,j,length(a[i])); insert(b[i],s1,j); end else s1[j]:='z'; j:=pos(a[i],s1); end; end; write(s); end.
Code mẫu của happyboy99x
#include <bits/stdc++.h> using namespace std; int main(){ string str; getline(cin, str); str.insert(0, " "); str.insert(str.length(), " "); for (unsigned int i=1; i<str.length(); ++i){ if (str[i] == 'k' && str[i-1] == ' ' && str[i+1] == ' ') str.replace(i, 1 , "khong"); if (str[i] == 'k' && str[i-1] == ' ' && str[i+1] == 'o' && str[i+2] == ' ') str.replace(i, 2 , "khong"); if (str[i] == 'n' && str[i-1] == ' ' && str[i+1] == ' ') str.replace(i, 1 , "nhieu"); if (str[i] == 'n' && str[i-1] == ' ' && str[i+1] == 'g' && str[i+2] == ' ') str.replace(i, 2 , "nguoi"); if (str[i] == 'd' && str[i-1] == ' ' && str[i+1] == 'c' && str[i+2] == ' ') str.replace(i, 2 , "duoc"); if (str[i] == 'h' && str[i-1] == ' ' && str[i+1] == 'o' && str[i+2] == 'k' && str[i+3] == ' ') str.replace(i, 3 , "khong"); if (str[i] == 'n' && str[i-1] == ' ' && str[i+1] == 't' && str[i+2] == 'n' && str[i+3] == ' ') str.replace(i, 3 , "nhu the nao"); if (str[i] == 'k' && str[i-1] == ' ' && str[i+1] == 'q' && str[i+2] == ' ') str.replace(i, 2 , "ket qua"); if (str[i] == 'j') str.replace(i, 1 , "gi"); if (str[i] == 'w') str.replace(i, 1 , "qu"); if (str[i] == 'f') str.replace(i, 1 , "ph"); if (str[i] == 'd' && str[i+1] == 'z') str.replace(i, 2 , "d"); if (str[i] == 'z') str.replace(i, 1 , "d"); } for (unsigned int i=1; i<str.length() - 1; ++i) cout << str[i]; }
Code mẫu của ladpro98
program chatchit; uses math; const fi=''; var res:ansistring; procedure rw(x,y:string); var i:longint; t:ansistring; begin t:=''; i:=1; while i<=length(res) do begin if res[i] in ['a'..'z'] then t:=t+res[i] else if (i+length(x)<length(res)) and not (res[i+length(x)+1] in ['a'..'z']) and (copy(res,i+1,length(x))=x) then begin t:=t+res[i]+y; inc(i,length(x)); end else t:=t+res[i]; inc(i); end; res:=t; end; procedure r(x,y:string); var i:longint; t:ansistring; begin i:=1; t:=''; while i<=length(res) do begin if copy(res,i,length(x))=x then begin t:=t+y; inc(i,length(x)-1); end else t:=t+res[i]; inc(i); end; res:=t; end; procedure input; var inp:text; begin assign(inp,fi); reset(inp); readln(inp,res); close(inp); end; begin input; res:=' '+res+' '; rw('k','khong'); rw('ko','khong'); rw('ng','nguoi'); rw('n','nhieu'); rw('dc','duoc'); rw('hok','khong'); rw('ntn','nhu the nao'); rw('kq','ket qua'); r('j','gi'); r('w','qu'); r('f','ph'); r('dz','d'); r('z','d'); write(copy(res,2,length(res)-1)); end.
Code mẫu của khuc_tuan
#include <string> #include <iostream> #include <map> using namespace std; map<string,string> RW, R; void init() { RW["k"]="khong"; RW["ko"]="khong"; RW["ng"]="nguoi"; RW["n"]="nhieu"; RW["dc"]="duoc"; RW["hok"]="khong"; RW["ntn"]="nhu the nao"; RW["kq"]="ket qua"; R["j"]="gi"; R["w"]="qu"; R["f"]="ph"; R["dz"]="d"; R["z"]="d"; } int main() { init(); string s; getline( cin, s); bool tiep = true; while(tiep) { tiep = false; for(int i=0;i<s.length();++i) if(islower( s[i])) { int st = i; int en = i; while(st>0 && islower(s[st-1])) --st; while(en<(int)s.length()-1 && islower(s[en+1])) ++en; string w = s.substr( st, en-st+1); if(RW.count(w)) { tiep = true; s.replace( st, en-st+1, RW[w]); break; } } } //cout << s << endl; tiep = true; while(tiep) { tiep = false; for(int i=0;i<(int)s.length()-1;++i) if(R.count(string("")+s[i] + s[i+1])) { tiep = true; //cout << s << endl; s.replace( i, 2, R[string("")+s[i]+ s[i+1]]); //cout << " sau : " << s << endl; break; } for(int i=0;i<s.length();++i) if(R.count(string("")+s[i])) { tiep = true; s.replace( i, 1, R[string("")+s[i]]); break; } } cout << s << endl; //system("pause"); return 0; }
Bình luận