01/10/2018, 10:12
Tìm Kiếm Tài Năng Dạy Nhau Học
Title cho ngầu vậy thôi ạ
Ai có gạo thì góp thôi ạ
- Viết thuật toán để đảo ngược các kí tự alphabet trong 1 string, còn các kí tự khác (tạm gọi là các kí tự đặc biệt) ko thay đổi.
Ví dụ:
- Input: “a.b,c@d”
- Output: “d.c,b@a”
- Viết thuật toán để trả về 1 tập con nhỏ nhất trong 1 tập các số tự nhiên cho trước, sao cho tổng các phần tử của tập con đó lớn hơn 1 số nguyên dương cho trước.
tập con nhỏ nhất : là tập hợp có số phần tử ít nhất, sau đó là tổng các phần tử nhỏ nhất có thể.
Ví dụ 1:
- Input: list_input = [ 4,7,9,5,0,10], int_input = 8
- Output: list_output = [9]
Ví dụ 2: - Input: list_input = [ 4,3,5] , int_input = 6
- Output: list_output = [3,4]
2 bài mới thấy trên Facebook.
Với bài 1 thì em giải như sau
from string import punctuation
s = 'a.b,c@d'
s = list(s)
specialchar = set(punctuation)
for i in range(len(s) // 2):
if {s[i], s[-(i + 1)]} - specialchar == {s[i], s[-(i + 1)]}:
s[i], s[-(i + 1)] = s[-(i + 1)], s[i]
s = '.join(s)
Còn bài 2 thì em chưa biết làm như thế nào
Bài liên quan
Tập con có liên tiếp không ấy nhỉ, nếu liên tiếp thì chặt nhị phân thôi =)) còn nếu không thì QHĐ…
2 câu này phỏng vấn Không cần liên tiếp
Đời ngang trái thế :’( QHĐ thôi
[spoiler]Vẫn là nhìn thấy như thế, nhưng chưa nghĩ ra nên làm gì tiếp theo [/spoiler]
Còn có 1 cách tham lam, sort tăng tất cả các phần tử rồi chặt nhị phân :v đề bảo không liên tiếp mà :v triển thôi, nhưng sợ sai :’( không có test case để thử nhỉ :v
Cái ví dụ 2 hơi sai nhỉ, list_output phải là [4, 3] chứ :v
Em thì mù tịt không biết thuật toán là cái gì mặc dù mấy lần cũng ráng học mà mãi không vô gặp mấy bài này cũng bật ngữa
Cố lên =)) học mấy cái đơn giản trước, kiểu như thuật toán tìm kiếm, backtrack rồi dần phát triển lên =))
E vẫn ngu ngơ không biết code nó thế nào
Ko đọc kĩ đề là tập con nhỏ nhất
Ý nghĩ đầu tiên của mình khi đọc bài 2 là sắp xếp lại chuỗi đầu vào rồi tìm từ đuôi lên. Nếu số cuối cùng mà nhỏ hơn thì tính tổng 2 số cuối cùng. Nếu tổng 2 số cuối cùng mà nhỏ hơn int_input thì tính tổng 3 số cuối cùng…
Nếu tổng n số lớn hơn thì tìm khối n số nhỏ nhất lơn hơn int_input
Nếu tổng tất cả các số nhỏ hơn int_input thì trả về null
Nhìn sơ qua thì có 2 trưởng hợp nhỉ.
1 là trong list có số > int_input
2 là các số trong list đều < int_input
Còn trưởng hợp nào nữa ko ?
TH1 thì chọn số nào bé nhất trong số >int_input.
TH2 thì sắp xếp tăng dần rồi cộng các phần tử trong list
Em lượm Facebook thì nó chỉ ngắn gọn thế thôi
đọc cái thuật toán knapsack gì đó rồi chế biến thêm
Hix bài này phải xé nó ra thành bài nhỏ hơn, Tìm tất cả các tập con của list_input???, làm được cái này thì như xong được 80%…hix hix hix
c1of7+c2of7+c3of7+c4of7+c5of7+c6of7=.
bài này thuộc thể loại vét cạn, !!!
Em làm bài 1 cách này. Các bác xem giúp e có được không ạ
Còn bài 2 thì em làm như này,các bác xem giúp e có ok không ạ
Câu 2 nhé:
Câu 1 có vẻ sai nhé, lời giải trên thì các kí tự đối diện kí tự đặc biệt không bị đổi chỗ, ví dụ “abcd@ef”
lời giải Grak_T
“fecd@ba”
trong khi tui hiểu đề thì kết quả phải là
fedc@ba
chết chưa đọc đến python =))