Hỏi & đáp lập trình

canh en buon

Youtube Master Race
Tài liệu lập trình
* E-book Tiếng Việt
http://www.box.net/public/ik9j057ojl#5:755027
http://3c.com.vn/Zone/vn/hotrokhachhang/ebklaptrinhvahethong.html
http://wordpress.com/tag/ebook-tai-liệu-giao-trinh-tiếng-việt/
http://www.ddth.com/showthread.php?t=84784
http://www.diendantinhoc.com/index.php?showtopic=2711
http://www.ebook4u.vn/view-folder.htm?folderId=2
(nick enphuongNam, password 123456)
http://www.e-ptit.edu.vn/clbsv/showthread.php?t=5415
http://www.e-ptit.edu.vn/clbsv/showthread.php?t=5411
(nick enphuongNam, password abcdef)

(các bạn dùng nick trên để đăng nhập diển đàn, nhưng xin đừng sửa pasword)

-------------------------------------------------------------------------------------------------------------
Nếu bạn nào có tài liệu hay (hoặc các đường link) về lập trình xin hãy up lên cho mọi người cùng tham khảo nhé...
Xin cám ơn rất nhiều

Đối với nhiều người việc lập trình là 1 công viêc vất vả và khô khan (nếu không nói là nhàm chán)

Nhưng các bạn hãy nhớ lại cái cảm xúc khi mình tìm ra 1 giải thuật tối ưu, hay khi mình hiện thực thành công 1 projec
(sau hàng tháng trời ăn nằm với chiếc máy tính)
Lúc đó tâm trạng của bạn thế nào???


Bản thân mình nhờ may mắn thi đậu vào lớp chuyên tin nhưng lại chả biết tí gì về máy tính, nội gõ bàn phím thôi đã rất khó khăn nói gì đến lập trình
Vì vậy thời gian đầu mình rất ghét lập trình, ghét cay ghét đắng

Nhưng mọi việc đã thay đổi khi lần đầu tiên tự tay mình viết 1 chương trình hoàn chỉnh (mình nhớ rõ đó là bài tìm các số nguyên tố nhỏ hơn 1000)
Lúc đó mình có 1 cảm giác lân lân rất khó tả và mình bắt đầu càm thấy yêu thích môn lập trình này, niềm say mê đó cứ lớn dần.

Mình đã từng trải qua giai đoạn mới bắt đầu làm quen với lập trình nên mình hiểu rất rõ các khó khăn mà các bạn sẽ gặp phải.

Vì vậy mình muốn lập ra topic này nhằm chia sẽ các khó khăn với các bạn mới nhập môn

Cuối cùng, mình chúc các bạn thành công trên con đường lập trình mà mình đã chọn^^

Các ngôn ngữ lập trình bạn nên học
(đươc tạp chí eWEEK bình chọn)
1. Ngôn ngữ PHP

- Nó là ngôn ngữ gì? PHP là một ngôn ngữ lập trình web, đó là một dạng của mã nguồn mở (xem www.php.net) và được sử dụng nhiều nhất, thích hợp nhất cho việc phát triển các website vừa và nhỏ. Thêm nữa, PHP là một ngôn ngữ lập trình Web kiểu script, nó là một dạng của ngôn ngữ kịch bản (cũng gần giống kiểu của ngôn ngữ kịch bản ASP) và nó có thể được nhúng vào các trang HTML.

- Tại sao bạn nên lựa chọn ngôn ngữ này: PHP đã được sử dụng rộng rãi và phổ biến nhất để xây dựng các các trang web động. Các bạn có thể thấy trên nhiều diễn đàn, các cổng thông tin Portal, các website cá nhân được thiết kế bằng mã nguồn mở của PHP. Vì thế mà PHP đang có một chỗ đứng vững chắc trong thế giới các ngôn ngữ lập trình web. Vậy không có lý do gì mà những người yêu thích lập trình trên web không chọn nó cho công việc của mình.

2. Ngôn ngữ C#

- C# là gì? C# là một ngôn ngữ lập trình hướng đối tượng, ngôn ngữ biên dịch, ngôn ngữ đa năng được phát triển bởi hãng Microsoft, là một phần khởi đầu cho kế hoạch .NET. Microsoft phát triển C# dựa trên C, C++ và Java. C# được miêu tả là ngôn ngữ có được sự cân bằng giữa C++, Visual Basic, Delphi và Java..

- Tại sao bạn nên học C#? Nó là ngôn ngữ lập trình cốt yếu nhất của .N

et framework mà tất cả các chương trình .NET chạy, và nó phụ thuộc mạnh mẽ vào Framework. Cuối cùng đã có rất nhiều ứng dụng phần mềm được thiết kế trên C#.

3. AJAX (viết tắt từ Asynchronous JavaScript and XML - JavaScript và XML không đồng bộ)

- AJAX là gì? Đây dường như là một kỹ thuật mà không phải là một ngôn ngữ lập trình cụ thể. AJAX sử dụng XHTML hay HTML, JavaScript và XML để tạo sự tương tác giữa các ứng dụng Web. Đó là bộ công cụ cho phép tăng tốc độ ứng dụng web bằng cách cắt nhỏ dữ liệu và chỉ hiển thị những gì cần thiết, thay vì tải đi tải lại toàn bộ trang web.

- Tại sao bạn nên học AJAX: Từ khi hãng Google ứng dụng AJAX vào các sản phẩm của mình như Google Suggest và Google Maps (hai ví dụ nổi bật về phương pháp ứng dụng web thế hệ mới) thì các công ty hàng đầu trên thế giới cũng đang từng bước phát triển và ứng dụng công nghệ này. Vậy thì tại sao, với công nghệ mới đang trở thành cuộc cách mạng trong thế giới Web mà lập trình viên chúng ta lại đứng ngoài cuộc. Hãy học và đọc để tìm hiểu thêm về sự kết hợp tuyệt vời của công nghệ Web này.

4. JavaScript

- Không sánh được với Java, nhưng JavaScript cũng là một ngôn ngữ lập trình web kiểu scripting, nó cũng là một ngôn ngữ lập trình hướng đối tượng được chạy trên các trình duyệt web bên phía client. Javascript nhỏ hơn Java, nó có tập hợp các câu lệnh đơn giản, dễ dàng để viết mã lệnh. Đặc biệt, nó không cần phải biên dịch.

- Tại sao bạn nên học nó: Bởi đây là một trong những ngôn ngữ thông dụng, được sử dụng trên hàng triệu các trang web của hệ thống Internet. Nó được nhúng vào các trang HTML, tạo ra các cookies, cải tiến thiết kế. JavaScript là ngôn ngữ học rất đơn giản, dể sử dụng, nó cũng là ngôn ngữ lập trình web được sử dụng rộng rãi cho các lập trình web chuyên nghiệp.

5. Ruby and Ruby on Rails

- Có vẻ như đây là những cái tên khá mới mẻ trong các ngôn ngữ lập trình. Hay ít nhất là người viết chưa hề được tiếp cận đến nó. Theo thông tin tìm hiểu thì Ruby là một ngôn ngữ lập trình mã nguồn mở, hướng đối tượng. Ruby on Rails là một công cụ phát triển web được đánh giá cao nhất trong năm 2006. Nó tạo nên một phương thức phát triển phần mềm mới trong lĩnh vực Web 2.0. Các bạn hãy tiếp cận để trở thành một lập trình viên trong tương lai và làm chủ những ngôn ngữ lập trình mới. Cần tìm hiểu thêm về ngôn ngữ lập trình này, các bạn có thể vào địa chỉ http://vnruby.org. Đây là website của Hội nghiên cứu ứng dụng ngôn ngữ Ruby của Việt Nam. Tại đây, bạn sẽ được tìm hiểu những kiến thức mới nhất về Ruby on Rails.

6. VB.Net (Visual Basic .Net)

- Đây là một ngôn ngữ lập trình hướng đối tượng được cài đặt trên nền .Net framework của Microsoft. Có lẽ người viết bài này không cần phải giới thiệu nhiều về VB.Net vì nó đã quá nổi tiếng. VB.Net đang trở thành một công cụ hữu hiệu cho mọi lập trình viên. Và nếu bạn nào chưa được học và nghiên cứu về VB.Net thì hãy nhanh chóng lên kế hoạch để nghiên cứu về nó đi nhé.
Một số kinh nghiệm
* Để học tốt lập trình các bạn đừng ngại viết code (viết code trên máy chứ không phải code miêng hay code giấy), hãy thực hành thật nhiều và bạn sẽ cảm thấy tự tin hơn.

* Lập trình không phải là công việc dề dàng. Nó đòi hỏi bạn phải rèn luyện các tính cách sau:
+ Kiên trì: 1 project bình thường có thể mất cả tháng trời để hoàn thành. Nếu thiếu kiên trì bạn có thể mau chóng bỏ cuộc
+ Bình tỉnh và tỉ mỉ: phần mệt nhất và cũng là chán nhất khi lập trình là debug :-s nếu bạn không có đức tính này thì rất dễ đập máy :D

* Khi lập trình nếu gặp 1 vấn đề lớn thì bạn có thể:
+ Chia nhỏ nó ra và giải quyết từng thằng một.
+ Nếu 1 vấn đề khó suy nghỉ mải không ra thì đừng nản, hôm nay không ra thì ngày mai suy nghỉ tiếp, và nếu mai không ra thì mốt suy nghỉ tiếp, chắc chắc bạn sẽ nghỉ ra

* Đừng ngại thất bại,bởi vì thất bại là khởi đầu của thành công, chỉ cần mổi lần thất bại bạn có thể rút ra kinh nghiệm cho bản thân thì thành công chỉ là chuyện sớm muộn thôi

* Cuối cùng là bạn phải luôn có niềm tin vào bản thân: Nếu ngay từ đầu bạn nghỉ mình không làm được thì chắc chắc bạn sẽ không làm được.
(Phải luôn suy nghỉ rằng cái người ta làm được thì mình nhất định làm đượccái người ta làm không được thì chưa chắc mình làm không được)

Trước khi kết thút mình xin đố các bạn 1 bài toán nho nhỏ
Hãy tìm 1 giải thuật cho biết 1 danh sách liên kết động có bị lập vòng hay không
Ví dụ:
A->B->C->NULL (không bị lặp vòng)
A->B->C->A (lặp vòng)
Các bạn chỉ cần nói ý tưởng hay giải thuật thôi, không cần phải hiện thực. Mình sẽ sớm gửi đáp án
 
Bạn ơi , cho mình hỏi một chút về những vấn đề có lien wan dến lập trình :
Bạn có thể cho mình biết những con số từ 1>>9 ký hiệu là gì được ko .Và cho mình biết làm thề nào ( vào đâu ) để tạo bảng lập trình được ko .

Tôi chỉ hơi biết một chút về tin học thôi chứ ko rành về cách lập trình .
Tôi mong bạn có thể hướng dẫn một chút cho tôi. Xin cam' ơn
 
Xin lỗi mình vẫn chưa hiểu lắm câu hỏi của bạn lắm.
Bạn định hỏi mã ascii từ 1 đến 9 hay ký hiệu "1>>9" là gì?
Thôi mình trả lời cả 2 vậy:
+ Mã ascii từ 1-> 9 là : 49-58
+ Còn ký hiệu 1>>9 trong ngôn ngữ C có nghĩa là dịch phải 9 lần, tức là 1>>9 = 2^9

Còn bảng lập trình là gì? Có phải bạn nói bảng mã ascii không? Vậy thì bạn phải nói cụ thể trong ngôn ngữ nào?
 
Đề: tìm danh sách động bị lập vòng?

Giải: cho 1 con trỏ giữ node đầu tiên, và 1 con trỏ duyệt danh sách, nếu trong quá trình duyệt danh sách con trỏ thứ 2 bằng con trỏ thứ nhất thì xuất ra danh sách đã lập vòng.

Ví dụ: A(node1) -> B -> C -> A
duyệt lần 1: A(node1) -> B(node2) -> C -> A
duyệt lần 2: A(node1) -> B -> C(node2) -> A
duyệt lần 3: A(node1) -> B -> C -> A(node2) ==> lập vòng

Dễ như cơm bữa
 
Trong bài giải bạn cho con trỏ giữ vị trí đầu tiên, vậy nếu lỡ phần tử cuối cùng không trỏ về đầu tiên thì sao.

Ví dụ: A -> B -> C -> D -> B
A(node1) -> B(node2) -> C -> D -> B
A(node1) -> B -> C(node2) -> D -> B
A(node1) -> B -> C -> D(node2) -> B
A(node1) -> B -> C -> D -> B(node2)
A(node1) -> B -> C(node2) -> D -> B (lặp vô tận) =>gameover
 
Phải làm thế nào để leo lên cái ghế quản lý ( project manager ) hoặc hơn thía nữa chứ cứ ngồi làm coder cả đời thì ko ổn đâu :D

Cái bài trên tớ chả biết con trỏ là gì , nhưng mà cứ duyệt lặp vòng 4 lần xem , lần đầu A , lần sau B ... chẳng hạn . Chả học thuật toán bao giờ , nhưng vẫn code ứng dụng thực tế tốt ^^ , C# thui ko phải C++
 
Con trỏ thực ra chỉ là 1 biến đặc biệt (thay vì chứa dữ liệu thì nó chứa địa chỉ của 1 biến khác).

Đây là 1 ví dụ về con trỏ trong C++

int a = 2;
int *con_tro;
con_tro = &a; //gán địa chỉ của biến a vào con trở
cout<<*con_tro;//xuất ra giá trị của vùng nhớ con trỏ trở tới
cout<<con_tro; // xuất ra địa chỉ của biến a

Bạn hãy thử đánh đoạn code trên vào xem::)

C# và 1 số ngôn ngữ cấp cao khác (java và VB) không còn dùng con trở nửa bởi vì 3 nguyên nhân:
+ Khó sử dụng! Con trỏ có thể lãm nản lòng bất kỳ ngưới nào mới làm quen với lập trình
+ Dễ tạo rác hệ thống! Khi bạn tạo ra 1 con trỏ nếu bạn quên delete nó, thì vùng dữ liệu con trỏ đó trỏ tới sẽ trở thành rác hệ thống
+ Rất nguy hiểm! Con trỏ là 1 biến đặc biệt, nó có thể trỏ tới bất kỳ đâu trong hệ thống. Hãy thữ nghĩ xem nếu 1 con trỏ vô tình trỏ tới 1 file hệ thống và chỉnh sửa lại các giá trị trong đó thì sẽ thế nào? (nhẹ thì treo máy, nặng thì cài lại window).::)
* Do tính chất trên nên con trỏ rất được các hacker ưu thích (vì thế nếu bạn muốn trở thành 1 hacker thì hãy sữ dụng thành thạo con trỏ:D )
 
Cách giải của bạn satthu gì gì đó là đúng rồi, nhưng tốn nhiều thời gian. Ở đây ta có 1 cách giải rất hay:

Đầu tiên ta cho con trở thứ nhất nắm vị trí đầu tiên, và con trỏ thứ hai nắm vị trí kế tiếp. Sau đó ta duyệt danh sách theo cách:
+ Con trỏ thứ hai nhảy 2 bước
+ Con trỏ thứ nhất nhảy 1 bước
+ Khi nào con trỏ thứ 2 bằng NULL thì kết luận danh sách không lặp vòng
+ Khi nào con trở thứ 1 bằng con trỏ thứ 2 thì kết luận bị lặp vòng
Ví dụ:
A -> B -> C -> D -> E -> B
Khởi đầu: A(con_tro 1) -> B(con_tro 2) -> C ->D -> E -> B
Duyệt lần 1: A -> B(con_tro 1) -> C -> D(con_tro 2) -> E -> B
Duyệt lần 2: A -> B -> C(con_tro 1) -> D -> E -> B(con_tro 2)
Duyệt lần 3: A -> B -> C -> D(con_tro 1 = con_tro 2) -> E -> B
=> bị lặp vòng
Lưu ý ở lần lặp thứ 2 và 3, con trở 2 quay trở về rồi nhảy tiếp 2 bước quay trở tới D, tại đây có gặp con trỏ 1
 
Hôm nay trong khoa mình có thảo luận 1 đề tài khá thú vị.

Nội dung như sau: người kỹ sư công nghệ thông tin không nhất thiết phải biết lập trình!!!
Các bạn nhận xét sau về ý kiến trên?

Ý kiến của mình: Một người kỹ sư công nghệ thông tin không biết lập trình thì cũng giống như một nhà văn không biết chữ:D
 
Nhà văn đâu nhất thiết phải biết chữ. Mấy ông viết truyện cổ tích, thần thoại ngày xưa có biết lấy nữa chữ đâu.=))

Tương tự, trong công nghệ thông tin, nếu mình chọn theo ngành quản trị mạng, hay ngành nào thiên về phần cứng thì đâu cần phải biết lập trình làm chi cho mệt.

Vì vậy em tán thành ý kiến trên
 
Theo tui thì còn tùy trường hợp. Những ngành như quản trị mạng hay phần cứng thì không cần biết lập trình nhưng những ngành như lập trình mạng, hay lập trình hệ thống nhúng mà không biết lập trình thì chỉ còn biết cắn lưỡi=)).

=>Tôi bỏ phiếu trắng (không tán thành cũng như không phản đối).
 
Ai giải hộ mình bài này với , nghĩ mãi chả ra

Đề : 1.tính tổng S=1+1/2+1/3+....+1/n > sử dụng loop
2.Nhập các giá trị cho mảng sau đó in ra có bao nhiêu số dương trong đó ,tính tổng các số âm ,co bao nhiêu số chính phương , bao nhiêu số nguyên tố .

Cảm ơn trước nha
 
Cái bài 1 dùng ứng dụng Cn gì gì đó trong toán lớp 12 với đệ quy là xong .
Câu 2 thì nhập mảng , sau đó duyệt nếu >0 thì count += 1, còn <0 thì tong += số âm đó , còn số chính phương với số nguyên tố là cái số gì thì tớ quên xừ nó rồi :D
 
Ai giải hộ mình bài này với , nghĩ mãi chả ra

Đề : 1.tính tổng S=1+1/2+1/3+....+1/n > sử dụng loop
2.Nhập các giá trị cho mảng sau đó in ra có bao nhiêu số dương trong đó ,tính tổng các số âm ,co bao nhiêu số chính phương , bao nhiêu số nguyên tố .

Cảm ơn trước nha

Lần sau các bạn post câu hỏi nhớ ghi rõ yêu cầu nhe:-/ , như cần hỏi ý tưởng, giải thuật hay hiện thực (và phải ghi rõ hiện thực bằng ngôn ngữ nào!!!)
Do bạn không ghi rõ yêu cầu nên mình xin viết mã giả ngôn ngữ pascal:
Begin
label lap; //khai báo nhãn
integer n;
real i;
i := 0;
read(n); //nhập n
lap:
i := i + 1 / n;
loop lap;//nhay
write(i); //xuat ket qua
End;

(xin lổi nếu mình nhớ không lầm thì lệnh loop là lệnh nhảy tương tự lệnh goto, phải không? Mình cũng không chắc lắm)
 
Ai giải hộ mình bài này với , nghĩ mãi chả ra

Đề : 1.tính tổng S=1+1/2+1/3+....+1/n > sử dụng loop
2.Nhập các giá trị cho mảng sau đó in ra có bao nhiêu số dương trong đó ,tính tổng các số âm ,co bao nhiêu số chính phương , bao nhiêu số nguyên tố .

Cảm ơn trước nha

Ngôn ngữ C++:


#include<iostream.h>
void main{

int hang, cot;
int A[hang][cot];
int dem_so_duong = 0;
int dem_so_nguyen_to = 0;
int tong_so_am = 0;
cin>>hang;
cin>>cot;

for (int i = 0; i < hang; i++)
for (int j = 0; j < cot; j++){

if (A[j] >= 0) dem_so_duong ++;
else tong_so_am += A[j];

bool kiem_tra_nguyen_to = true;
for (k = 2; k < A[j]; k++)
if (A[j] % k == 0){
kiem_tra_nguyen_to = false;
break;
}
if (kiem_tra_nguyen_to) dem_so_nguyen_to ++;

}

}

còn số chính phương là gì? quên mất tiêu rồi!!!:p
 
Xin lỗi hồi nãy mình lộn lệnh loop trong assembly (lần sau nói vòng lặp là mình hiểu rồi, dốt anh văn lắm:p )

var i: integer;
var n: integer;
var ketqua: real

Begin

Read(n);
ketqua = 0;
For i:= 1 to n do ketqua = ketqua + 1/i;
Write(ketqua);

End.
 
Uh sry , mình quên mất ko nói rõ , cảm ơn bạn nha . Ban. có thể giải lại cho mình mấy bài đó theo ngôn ngữ C được không vì mình đang học C mà . Khó quá học C đúng là đau cả đầu khó hiểu thế không biết .
Cảm ơn bạn lắm lắm .

À quên bạn giải cho mình theo kiểu như viết vào máy rồi chạy luôn đó nhá , kiểu hiện thực thì phải :-?

Còn cái này nữa :
Số chính phương là số mà bình phương phần nguyên căn bậc 2 của nó bằng chính nó ví dụ như các số 4 , 16 , 9 , 25...
k là số chính phương nếu ((int)sqrt(a))^2 == a

Còn nữa cái số nguyên tố là số như thế nào ấy nhỉ
 
Uh sry , mình quên mất ko nói rõ , cảm ơn bạn nha . Ban. có thể giải lại cho mình mấy bài đó theo ngôn ngữ C được không vì mình đang học C mà . Khó quá học C đúng là đau cả đầu khó hiểu thế không biết .
Cảm ơn bạn lắm lắm .

À quên bạn giải cho mình theo kiểu như viết vào máy rồi chạy luôn đó nhá , kiểu hiện thực thì phải :-?

Còn cái này nữa :
Số chính phương là số mà bình phương phần nguyên căn bậc 2 của nó bằng chính nó ví dụ như các số 4 , 16 , 9 , 25...
k là số chính phương nếu ((int)sqrt(a))^2 == a

Còn nữa cái số nguyên tố là số như thế nào ấy nhỉ

ý tưởng: lấy căn của a, sau đó lấy phần nguyên của a bình phương lên nếu không thay đổi => số chính phương

hiện thực ngôn ngữ VC++

#include<iostream.h>
#include<math.h>//kiểm tra xem có hàm sqr và sqrt không
void main {

int hang, cot;
int A[hang][cot];
int dem_so_chinh_phuong = 0;
cin>>hang;
cin>>cot;

for (int i = 0; i < hang; i++)
for (int j = 0; j < cot;j++)
cin>>A[j]; //nhập các giá trị cho mảng

double sqrt_a;
int int_a;
for (i = 0; i < hang; i++)
for (j = 0; j < cot; j++)
{
sqrt_a = sqrt(A[j]);
int_a = sqrt_a; //ép kiểu để lấy phần nguyên của a
if ( sqr(int_a) == A[j] ) dem_so_chinh_phuong++;
}

cout<<"So chinh phuong hien co trong mang la:"<<dem_so_chinh_phuong;

}

Nếu dùng ngôn ngữ C (ko phải C++) : thay thư viên iostream.h và các hàm cin, cout bằng thư viên stdio.h và các hàm printf, scanf.

Số nguyên tố là số chỉ chia hết cho 1 và chính nó!!!
 
Có ai biết ma phương là gì không? Và cách xây dựng 1 ma phương.

Ma phương bậc n: là 1 ma trận 2 chiều chứa các số từ 1 đến n^2 sao cho tổng các hàng bằng các cột và bằng 2 đường chéo chính

Ví dụ ma phương bậc 5:
11 18 25 02 09
10 12 19 21 03
04 06 13 20 22
23 05 07 14 16
17 24 01 08 15

Các hàng, cột, và 2 đường chéo chính đều bằng 65:D

Cách xây dựng ma phương bậc lẻ:
Ví dụ ma phương bậc 3:

Đầu tiên đặt số 1 vào chính giữa hàng cuối
* * *
* * *
* 1 *
Tiếp tục đặt số 2 vào vị trí đường chéo phải dưới
(nếu vướt quá giới hạn hạn hàng qui định (số hàng giới hạn 3) thì đưa nó lên đầu)
* * 2
* * *
* 1 *
Tiếp tục đặt số 3 trên đường chéo (nếu vượt cột qui định thì chuyển nó trở về cột đầu tiên)
* * 2
3 * *
* 1 *
Tiếp tục đặt số 4 trên đường chéo, nhưng vì vị trí nó trùng với số 1 nên ta đưa nó lên trên số 3
4 * 2
3 * *
* 1 *
Số 5 và 6 tiếp tục đưa đặt vào đường chéo
4 * 2
3 5 *
* 1 6
Tiếp tục như thế cho đến khi hoàn thành ma phương
4 9 2
3 5 7
8 1 6
Tóm lại để tạo 1 ma phương bậc lẻ ta chỉ cần chú ý:
+ Đặt các số liên tiếp trên đường chéo.
+ Nếu vượt quá hàng/cột qui đinh thi ta cho nó quay trở lại vị trí hàng cột đầu tiên.
+ Nếu vị trí đặt đã có sẵn số nào đó thì ta đặt nó ở trên vị trí cũ.

* Đây là giải thuật dành cho ma phương bậc lẻ, còn đối với ma phương bậc chẵn thì giải thuật hơi phứt tạp hơn!!! (bạn chịu khó tự tìm hiểu nhé)
 
Back
Top