PDA

View Full Version : help me! ma tran vuong



rainbow_93
03-09-2010, 13:31
e là lính mới vào, mong mọi người quan tâm, giúp đỡ.
e có bài ma trận vuông nak, mọi người giải giúp e nha', càng sớm càng tốt.
Cho số nguyên dương N bất kì. Hãy viết chương trình tạo ra mảng theo quy luật sau:
N=7
1 2 3 4 5 6 7
2 4 6 8 10 12 2
3 6 9 12 2 4 6
4 8 12 2 4 6 8
5 10 2 4 6 8 10
6 12 4 6 8 10 12
7 2 6 8 10 12 12
giúp e với nha! thanks mọi người trước!

Long_Phung
15-09-2010, 04:11
Viết rõ ràng thì rất dễ tìm ra quy luật của nó. Khi biết được quy luật thì điền vào đơn giản thôi.


01 02 03 04 05 06 07
02 04 06 08 10 12 02
03 06 09 12 02 04 06
04 08 12 02 04 06 08
05 10 02 04 06 08 10
06 12 04 06 08 10 12
07 02 06 08 10 12 12


Quy luật:
- Tại mỗi vị trí nếu chưa được điền thì điền bằng 1 trong các giá trị sau: (với thứ tự ưu tiên tuần tự trên xuống)

nếu là phần tử dầu tiên của hàng hoặc cột, thì điền = vị trí hàng hoặc cột
nếu là vị trí cuối cùng, thì điền =(n-1)*2
nếu giá trị đầu hàng * cột <(n-1)*2, thì điền = giá trị đầu hàng * cột
nếu giá trị trước nó hoặc trên nó =(n-1)*2 và khác 02, thì điền = 02
nếu giá trị trên nó +2 = giá trị trước nó thì điền=giá trị trước nó +4.
Không thỏa mãn các điều kện trên thì điền giá trị trên nó +2.


Bài này là 1 trong các ví dụ thuật toán thử - quay lui. Nếu tôi nhớ không nhầm thì đầu bài có thêm điều kiện là N lẻ.
Tôi còn nhìn ra 1 quy luật nữa để điền cho các vị trí phía cuối mảng, nhưng ... nhường bạn khác nha!