Mang đến cho bạn hành trang là Kiến thức và Kinh nghiệm

Lựa chọn chủ đề bạn quan tâm

Cùng nhau thảo luận về các vấn đề

Hãy theo dõi chúng tôi nếu bạn thấy bổ ích

  1. Hỏi đáp IT
  2. Hỏi nhanh

Bài toán lát gạch

613 Lượt xem 10 Bình luận 0 Lượt báo xấu
Em có 1 bài toán mong mọi người đóng góp ý tưởng.
Cho 1 đường đi kích thước 2 x N. 
Người ta dùng 2 loại gạch: 1x2 và 2x2. 
Tính tất cả cách lát phù hợp.
Gạch 1x2 có thể xoay chiều. 
Mong mọi người giúp đỡ.
Câu trả lời

- Bạn đã sẵn sàng thảo luận về chủ đề này. Hãy bấm "Viết bình luận", bạn có thể lựa chọn sử dụng tài khoản Facebook hoặc Google++

- Vì sự phát triển của cộng đồng CNTT/CNPM tại Việt Nam!

Unknown user
No responses yet

Từ f(N) suy ra f(N+1) xem sao.
0 Lượt thích

Từ f(n-1) -> f(n): có thêm bao nhiêu cách xếp?
Từ f(n-2) -> f(n): có thêm bao nhiêu cách xếp?
Vẽ hình ra.
0 Lượt thích

gọi f là hàm tính cách lát mà chứa ít nhất 1 hình 2x2 hoặc 2 hình 1x2 nằm ngang, g là hàm chứa tất cả các cách lát thì ta có:
g=f+1
f[0]=0;
f[1]=0;
f[2]=2;
Giờ xét với n>3, thì sẽ xét vị trí của ô 2x2 đầu tiên rồi cho chạy từ đầu đến cuối dãy, 1 ô2x2 lại tương đương với 2 ô 1x2 nên ta có:
f[n]=2(f[n-2]+1)+...+2(f[0]+1))
=2(f[n-2]+...+f[0]+n-1)
PS: cái f[n-2]+1 có thể thay là g[n-2]
0 Lượt thích

Công thức có vẻ không đúng lắm.
0 Lượt thích

Với mỗi đoạn 1x2 có 1 cách lát : 1 viên 1x2 nằm dọc.
Với mỗi đoạn 2x2 có 2 cách lát: 1 viên 2x2 hoặc 2 viên 1x2 nằm ngang (Lưu ý cách lát 2 viên 1x2 nằm dọc được tính là 2 đoạn 1x2 ở trên nên không tính ở đây).
Có bao nhiêu cách chia khối ban đầu thành các đoạn 2x2 và 1x2?
Với mỗi cách chia thành 2x2, sẽ có 2 cách lát đường, vậy có tất cả bao nhiêu cách lát đường?
Bài này chỉ là công thức, không cần lập trình.
0 Lượt thích

công thức của mình ko đúng chỗ nào ?
0 Lượt thích

Bạn code đi rồi đưa ra kết quả f(n) với n = 1 -> 10.
0 Lượt thích

#include <iostream>
using namespace std;

int main()
{
	int F[11];
	F[0]=0;
	F[1]=0;
	F[2]=2;
	for(int i=3;i<10;i++){
	int temp=0;
	for(int j=0;j<i-1;j++){
		temp+=2*F[j];
	}
	F[i]=temp+2*i-2;	
	}
	for(int i=0; i<10;i++){
		printf("\n%d %d",i,F[i]);
	}
}
mà quan trọng là nhìn thuật toán đúng hay ko, chứ code ra rồi thì cũng ai rảnh đi ngồi vẽ ra đếm lại để check đâu =)
0 Lượt thích

Vì mình biết đáp số nên mình mới bảo bạn check mà =)))
Đáp số của bạn đã sai. Chia buồn với bạn.
Ngay từ đầu bạn đã sai. F[1] = 1 mới đúng. Kể cả sửa lại F[1] thì kết quả vẫn sai.
0 Lượt thích

fdsf
0 Lượt thích

Từ khóa tìm kiếm

Câu trả lời mới nhất

Tin tuyển dụng