Cách tạo ra nhiều tổ hợp (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

ancrayzy

Thành viên chính thức
Tham gia
15/9/08
Bài viết
67
Được thích
4
Chào mọi người, mình muốn mọi người hướng dẫn giúp tạo bảng tính như thế nào để giải quyết bài toán dưới dây:
Khi nhập 1 giá trị L, bảng tính sẽ tổ hợp tất cả các trường hợp có thể xảy ra sao cho: L= x*a+y*b <= c
Trong đó:
a có 4 giá trị là 500, 1000, 1500, 2000, b có 2 giá trị là 0 hoặc 200, c có giá trị từ 600 -> 900
x là số lượng a, y là số lượng b
Dưới đây là hình minh họa

excel.PNG
Cảm ơn mọi người.
 
Chào mọi người, mình muốn mọi người hướng dẫn giúp tạo bảng tính như thế nào để giải quyết bài toán dưới dây:
Khi nhập 1 giá trị L, bảng tính sẽ tổ hợp tất cả các trường hợp có thể xảy ra sao cho: L= x*a+y*b <= c
Trong đó:
a có 4 giá trị là 500, 1000, 1500, 2000, b có 2 giá trị là 0 hoặc 200, c có giá trị từ 600 -> 900
x là số lượng a, y là số lượng b
Dưới đây là hình minh họa

View attachment 236159
Cảm ơn mọi người.
Gửi file giả lập lên đi bạn
 
Chào mọi người, mình muốn mọi người hướng dẫn giúp tạo bảng tính như thế nào để giải quyết bài toán dưới dây:
Khi nhập 1 giá trị L, bảng tính sẽ tổ hợp tất cả các trường hợp có thể xảy ra sao cho: L= x*a+y*b <= c
Trong đó:
a có 4 giá trị là 500, 1000, 1500, 2000, b có 2 giá trị là 0 hoặc 200, c có giá trị từ 600 -> 900
x là số lượng a, y là số lượng b
Dưới đây là hình minh họa
Cảm ơn mọi người.
Biểu thức màu đỏ là chính xác đúng yêu cầu của bạn?
 
Biểu thức màu đỏ là chính xác đúng yêu cầu của bạn?
Đúng rồi bạn, trong công file tính toán mình muốn để các giá trị của a, b nằm riêng từng ô để điều chỉnh giá trị linh động và thêm bớt một trong các số (500, 1000, 1500, 2000) được.
 
Đúng rồi bạn, trong công file tính toán mình muốn để các giá trị của a, b nằm riêng từng ô để điều chỉnh giá trị linh động và thêm bớt một trong các số (500, 1000, 1500, 2000) được.
Có lẽ bạn làm rõ thêm chỗ này
L= x*a+y*b <= c
với 600<c<900 có lẽ chỉ có 1*500+1*200 là đạt yêu cầu.
nếu a>=1000 thì coi như không thỏa mãn.
 
Có lẽ bạn làm rõ thêm chỗ này
L= x*a+y*b <= c
với 600<c<900 có lẽ chỉ có 1*500+1*200 là đạt yêu cầu.
nếu a>=1000 thì coi như không thỏa mãn.
Diễn giải theo L= x*a+y*b <= c không chính xác, cứ theo điều kiện giá trị ô L2 thỏa: 600<= L2<=900
 
Có lẽ bạn làm rõ thêm chỗ này
L= x*a+y*b <= c
với 600<c<900 có lẽ chỉ có 1*500+1*200 là đạt yêu cầu.
nếu a>=1000 thì coi như không thỏa mãn.

Diễn giải theo L= x*a+y*b <= c không chính xác, cứ theo điều kiện giá trị ô L2 thỏa: 600<= L2<=900

Có lẽ thớt chưa từng học môn toán "bất đẳng thức" cho nên không hiểu ý nghĩa của ký hiệu <= trong toán học.
Phương trình kia phải viết là
L= x*a+y*b + c
Hay đúng với toán hơn (thừa số đi trước biến số):
L = ax + by + c
mới đúng

Và diễn theo điều kiện yêu cầu thì là
L = a1x1 + a2x2 + a3x3 + a4x4 + by + c
x1 = 2000, x2 = 1500, x3 = 1000, x4 = 500
y = 200
c = [600,700,800,900]

Rốt cuộc, đây là dạng bài toán đếm mệnh giá tiền.
(cho một số mệnh giá tiền, có bao nhiêu cách để tổng thành L)
 
Lần chỉnh sửa cuối:
Có lẽ thớt chưa từng nhọc môn toán "bất đẳng thức" cho nên không hiểu ý nghĩa của ký hiệu <= trong toán học.
Phương trình kia phải viết là
L= x*a+y*b + c
mới đúng
L= x*a+y*b + c : ý này chưa đúng bạn nhé, mà phải thỏa điều kiện 600 <= c <=900. Tức là giá trị của c sẽ chạy từ 600~900.
Xin lỗi vì mình diễn giải chưa rõ nhé :D
 
Có lẽ thớt chưa từng học môn toán "bất đẳng thức" cho nên không hiểu ý nghĩa của ký hiệu <= trong toán học.
Phương trình kia phải viết là
L= x*a+y*b + c
Hay đúng với toán hơn (thừa số đi trước biến số):
L = ax + by + c
mới đúng

Và diễn theo điều kiện yêu cầu thì là
L = a1x1 + a2x2 + a3x3 + a4x4 + by + c
x1 = 2000, x2 = 1500, x3 = 1000, x4 = 500
y = 200
c = [600,700,800,900]

Rốt cuộc, đây là dạng bài toán đếm mệnh giá tiền.
(cho một số mệnh giá tiền, có bao nhiêu cách để tổng thành L)
Y=0 hoặc Y=200
Và các tham số nên để từng cell riêng để có thể điều chỉnh được nữa bạn
 
Lần chỉnh sửa cuối:
@ancrayzy
L2=x*a+y*b<=c
Tất nhiên là tôi hiểu cách bạn viết biểu thức trên.

Nhưng ý tôi muốn hỏi là bạn chốt biểu thức trên là đúng yêu cầu của đầu bài?
Bài đã được tự động gộp:

Diễn giải theo L= x*a+y*b <= c không chính xác, cứ theo điều kiện giá trị ô L2 thỏa: 600<= L2<=900
Cái này chưa chắc nhé bác.
Trong file có nói là L được tính thế nào đâu, chỉ nói là nhập tay L vào kia mà :).

Chào mọi người, mình muốn mọi người hướng dẫn giúp tạo bảng tính như thế nào để giải quyết bài toán dưới dây:
Khi nhập 1 giá trị L, bảng tính sẽ tổ hợp tất cả các trường hợp có thể xảy ra sao cho: L= x*a+y*b <= c
Trong đó:
a có 4 giá trị là 500, 1000, 1500, 2000, b có 2 giá trị là 0 hoặc 200, c có giá trị từ 600 -> 900
x là số lượng a, y là số lượng b
Dưới đây là hình minh họa
Cảm ơn mọi người.
 
Lần chỉnh sửa cuối:
Y=0 hoặc Y=200
Và các tham số nên để từng cell riêng để có thể điều chỉnh được nữa bạn
Bất cứ ai biết toán số đều thấy số lẻ dưới 100 của c cũng là số lẻ của L.
Vì vậy, số lẻ ấy không quan trọng.

Và các tham số tôi đã cho thấy cách đặt cells rồi, ở bài #11.
x1 = 2000, x2 = 1500, x3 = 1000, x4 = 500
y = 200
c = [600,700,800] + số lẻ (1-100)

Cách xếp ở đầu bài #1 đọc muốn nổ con mắt.
 
Lần chỉnh sửa cuối:
@ancrayzy
L2=x*a+y*b<=c
Tất nhiên là tôi hiểu cách bạn viết biểu thức trên.

Nhưng ý tôi muốn hỏi là bạn chốt biểu thức trên là đúng yêu cầu của đầu bài?
Bài đã được tự động gộp:


Cái này chưa chắc nhé bác.
Trong file có nói là L được tính thế nào đâu, chỉ nói là nhập tay L vào kia mà :).
B2 là giá trị nhập tay có thể thay đổi, tìm các số ở cột D tới cột K sao cho cột giá trị cột L nằm trong khoảng 600 đến 900
 
1587562399611.png

Công thức khác:
H3 =SUMPRODUCT($B$2:$F$2,$B3:$F3)+$G3=$A3
I3 =$G3=MEDIAN($G3,600, 900)
J3 =$F3<=1

Ở dòng 9, thử các trị khác nhau cho các cột B:F cho đến khi H:J đều True

Chú: tôi chỉ diễn tả lô gic của bài toán; quy thức trên không hẳn là giải thuật.
 
View attachment 236227

Công thức khác:
H3 =SUMPRODUCT($B$2:$F$2,$B3:$F3)+$G3=$A3
I3 =$G3=MEDIAN($G3,600, 900)
J3 =$F3<=1

Ở dòng 9, thử các trị khác nhau cho các cột B:F cho đến khi H:J đều True

Chú: tôi chỉ diễn tả lô gic của bài toán; quy thức trên không hẳn là giải thuật.
Thuật toán:
L là số nhập
Chuyển điều kiện C: 600 đến 900 thành 0 đến 300 và số nhập mới giảm 600: L-600
Xét 2 khả năng của C:
C=0: điều kiện thỏa khi ((L-600) mod 500) <=300, tmp= (L-600) - ((L-600) mod 500)
C=200: điều kiện thỏa khi ((L-600-200) mod 500) <=300, tmp= (L-600-200) - ((L-600-200) mod 500)
Xét các khả năng các số 500,1000,1500,2000 tối đa 7 số cộng lại bằng tmp
 
@ancrayzy
Giả sử B2=7800.
x=0 với mọi a
y=35
biểu thức x*a + y*b = 7000 => 7800-7000=800.

Các giá trị trên có được coi là hợp lệ?
 
Chào mọi người, mình muốn mọi người hướng dẫn giúp tạo bảng tính như thế nào để giải quyết bài toán dưới dây:
Khi nhập 1 giá trị L, bảng tính sẽ tổ hợp tất cả các trường hợp có thể xảy ra sao cho: L= x*a+y*b <= c
Trong đó:
a có 4 giá trị là 500, 1000, 1500, 2000, b có 2 giá trị là 0 hoặc 200, c có giá trị từ 600 -> 900
x là số lượng a, y là số lượng b
Dưới đây là hình minh họa

View attachment 236159
Cảm ơn mọi người.
Bạn thử code này:
 

File đính kèm

Lần chỉnh sửa cuối:
Web KT

Bài viết mới nhất

Back
Top Bottom