Cần giúp về thuật toán trò chơi bốc sỏi

em đang có một bài tập như dưới đây ạ. em mới học c++ được vài tuần, còn hơi chưa quen với tư duy thuật toán. em xin phép gửi code của em, mong anh chị chỉ giúp em lỗi sai ạ. em cám ơn mọi người nhiều ạ.

    bool canWinNim (char * path) {
        ifstream file(path);
        int n,d;
        file >> n;
        int tam;
        tam=n; d=0;
        if (tam <=3) {
            return true;}
        else {
        while (tam > 3) {
               tam = tam-3;
               ++d;
        }
        if ((d % 2)==0) {
            return true;
        } else {return false;}
    }
}

tư duy thuật toán với code nó không có liên quan nhau lắm
bạn đã đọc hiểu đề chưa? bạn đã có thể giải bằng tay bài này chưa? cho số đá ban đầu là 50 thì bạn có tìm ra được đáp án không?
nếu bạn có thể giải/tính được kết quả thì bạn có thể nói ra cách bạn tính hay không?

4 Likes

đề thì em đã đọc kĩ và hiểu được vấn đề bài toán hỏi ạ.
em mới chỉ nghĩ được đến 1 vấn đề

nếu mà trong các trường hợp, em bốc sao cho số đá còn lại sau khi bốc chia hết cho 4 thì sẽ luôn thắng ? phần này em k chăc đúng lắm ạ

phần giải tay thì do chưa nghĩ được rõ thuật toán nên em cũng chưa thể tìm được ạ
mong anh giải đáp ạ, xin cám ơn anh nhiều ạ

vậy, với số đá là 50 70 85 95 thì người đi trước thắng hay là thua (giả sử ai cũng biết cách chơi tối ưu)
bạn hãy trả lời kém với giải thích

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?