thắc mắc Bài toán nhảm

  • Người tạo chủ đề Người tạo chủ đề loozer
  • Ngày bắt đầu Ngày bắt đầu

loozer

Junior Member
Email có n kí tự (không kể phần sau @). Dấu chấm có thể đặt bất kì đâu ngoại trừ trước kí tự đầu tiên và sau kí tự sau cùng. In ra màn hình tất cả các địa chỉ email có thể tạo được bằng thủ thuật dấu chấm.

Ví dụ: [email protected], địa chỉ không hợp lệ: [email protected], [email protected], [email protected]

Thủ thuật dấu chấm: đặt dấu chấm với số lượng và thứ tự tuỳ ý, ví dụ: [email protected], [email protected]

Em ngu tổ hợp, tính ra chắc có (n-1)! email các thím nhỉ :sweat: Cơ mà in ra cụ thể các địa chỉ email thì em không làm được :sweat:
 
Email có n kí tự (không kể phần sau @). Dấu chấm có thể đặt bất kì đâu ngoại trừ trước kí tự đầu tiên và sau kí tự sau cùng. In ra màn hình tất cả các địa chỉ email có thể tạo được bằng thủ thuật dấu chấm.

Ví dụ: [email protected], địa chỉ không hợp lệ: [email protected], [email protected], [email protected]

Thủ thuật dấu chấm: đặt dấu chấm với số lượng và thứ tự tuỳ ý, ví dụ: [email protected], [email protected]

Em ngu tổ hợp, tính ra chắc có (n-1)! email các thím nhỉ :sweat: Cơ mà in ra cụ thể các địa chỉ email thì em không làm được :sweat:
loser........................................................................................................................................1234@gmail.om có hợp lệ ko fen.
 
Nếu n là số kí tự trước dấu @ và không có 2 dấu chấm liền nhau thì có (n-1) vị trí có thể đặt dấu chấm => số email có thể tạo là 2^(n-1) nhé.
 
Python:
from typing import List

def generate_email_with_ndots(email: str, number_of_dot: int) -> List[str]:
    result = []
    if(number_of_dot == 1):
        for i in range(len(email) - 1):
            result.append(email[:i+1]+"."+email[i+1:])
        return result
    for i in range(len(email)-number_of_dot):
        recursive_result = generate_email_with_ndots(
            email[i+1:], number_of_dot - 1)
        for element in recursive_result:
            result.append(email[:i+1] + "." + element)
    return result

def generate_all_email(email: str) -> List[str]:
    result = []
    for i in range(len(email) - 1):
        result.extend(generate_email_with_ndots(email, i+1))
    return result

string = input("Nhap email khong bao gom phan '@xxx.yyy': ")
emails = generate_all_email(string)
for email in emails:
    print(email)

chạy thử cái này coi đúng không.
 
Có n kí tự => có (n - 1) vị trí có thể đặt dấu chấm. Mỗi vị trí lại có 2 trạng thái: đặt hoặc không đặt => có 2^(n - 1) trạng thái đó fen
Trừ đi 1 nữa nếu không tính mail không có dấu chấm nào.
 

Thống kê chủ đề

Ngày tạo
loozer,
Người trả lời cuối
AltF4,
Trả lời
8
Lượt xem
889
Quay lại
Lên đầu trang