Ide awalnya tetap menggunakan string, namun sejauh ini KuraKura hanya menemukan algoritma dengan O(2N) alias dengan 2 looping (bukan double looping yang nested; jika dobule looping nested memiliki O(N^2)). Looping pertama digunakan untuk membentuk string kemudian looping kedua digunakan untuk menulis string sebanyak baris.
Sebelum melihat code dengan 2 looping yang tidak nested, mari kita lihat yang normal terlebih dahulu.
program persegi_normal;
var
n,i,j:longint;
begin
readln(n);
for i:=1 to n do
begin
for j:=1 to n do
write('x');
writeln;
end;
end.
Terlihat bahwa yang normal menggunakan double looping secara nested. mari kita gunakan algoritma O(2N) pada program persegi. berikut code nya:
program persegi_non_nested;
var
n,i:longint;
s:string;
begin
readln(n);
for i:=1 to n do
s:s+'x';
for i:=1 to n do
writeln(s);
end.
Kurang lebih codenya seperti itu. Namun itu hanya berlaku pada segi empat sama sisi, jadi kalau persegi panjang gimana? kita tinggal menambahkan variable nya aja sih. tapi supaya lebih yakin, lihat code dibawah ini:
program persegi_panjang_non_nested;
var
p,l,i:longint; {p adalah panjang, l adalah lebar}
s:string;
begin
readln(p,l); {input di pisahkan oleh sebuah spasi}
for i:=1 to p do
s:=s+'x';
for i:=1 to l do
writeln(x);
end.
Example input:
5 3
Example output:
xxxxx
xxxxx
xxxxx
Sekian dari KuraKura, KuraKura menyarankan agar kalian untuk mencoba code tersebut dan mempelajarinya, maknai code itu setiap barisnya agar kalian benar-benar memahaminya. Jika ada code di atas tidak dapat dijalankan ataupun ada pertanyaan tentang code diatas, silahkan comment di post ini juga. thanks udah membaca KuraKura Programmer :)
Bye! Salam KuraKura :)
Tidak ada komentar:
Posting Komentar