Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: Bài toán tạo biểu thức (rất khó giúp mình với)

  1. #1
    Ngày gia nhập
    05 2013
    Bài viết
    1

    Post Bài toán tạo biểu thức (rất khó giúp mình với)

    Cho số tự nhiên n. Hãy đặt các dấu '+' hoặc '-' vào giữa các chữ số 1, 2, 3, 4, 5, 6, 7, 8 ,9 viết theo thứ tự đã cho để tạo ra 1 biểu thức có giá trị bằng n.
    VD: n=122 => 12+34-5-6+78+9

    Mọi người giúp em làm bài này kèm theo hướng dẫn chi tiết thuật toán với nha, thanks nhiều
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

  2. #2
    Ngày gia nhập
    09 2010
    Nơi ở
    Hà Nôi
    Bài viết
    464

    Cho dãy 123456789.
    Sau các chữ số 1,2,3,4,5,6,7,8 có thể đặt : dấu +, dấu - , ko có dấu gì.
    Quay lui vét cạn các phuơng án nếu = n thì dừng. 3^8 trường hợp thôi.
    Tặng bạn code luôn. ( Hơi dài).

    PHP Code:
    #include <stdio.h>
    #include <stdlib.h>

    enum SIGN PLUS = -1NONEMINUS };
    int behind[10] = {NONE};
    int ok 0// OK = 1: Found one result and stop!, OK = 0, Not found any result
    int n 0;

    void PrintResult()
    {
        
    int i 1;
        for (;
    <= 8; ++i)
        {
            
    printf("%d"i);
            if (
    behind[i] != NONEprintf("%c"behind[i] + 44);
        }
        
    printf("9\n");
        
    ok 1;
    }
    int MakeNumber(int iint j)
    {
        
    int value 00;
        for (
    i<= j; ++k)
            
    value 10 value k;
        return 
    value;
    }
    int CalcCurrentValue()
    {
        
    int value 01;
        
    int start 1num 0;
        
    char sign 0;

        while (
    <= && behind[i] == NONEi++;
        
    value MakeNumber(starti);

        while (
    9)
        {
            
    sign behind[i]; // Get operator

            // Get next number from expression
            
    start = ++i;
            while (
    <= && behind[i] == NONEi++;
            
    num MakeNumber(starti);

            switch (
    sign)
            {
            case 
    MINUSvalue value num;    break;
            case 
    PLUSvalue value num;        break;
            default:
                break;
            }    
        }
        return 
    value;
    }

    void Try(int i)
    {
        
    char ch;
        if (
    ok)    return;
        for (
    ch PLUSch <= MINUS; ++ch)
        {
            
    behind[i] = ch;
            if (
    CalcCurrentValue() == n)
                
    PrintResult();
            else if (
    8) Try(i+1);
        }
    }
    int main()
    {
        
    behind[9] = MINUS// Linh canh
        
    printf("Nhap n = ");
        
    scanf("%d", &n);
        Try(
    1);
        
    system("pause");
        return 
    0;

    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.
    Nhận code thuê :
    kiet.heros@gmail.com

Các đề tài tương tự

  1. mọi người ơi,giúp em bài về thư viện đi ạ,khó quá em làm không ra ạ
    Gửi bởi luungocly trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 04-12-2013, 07:02 PM
  2. Làm bài tập C khó quá. Ai tìm lỗi giúp em với
    Gửi bởi dongtrungvuongit trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 3
    Bài viết cuối: 22-10-2012, 04:29 PM
  3. Mới nhập môn khó quá , cần trợ giúp [Vấn đề của bạn cần muốn giúp là gì ?]
    Gửi bởi cuingo212 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 5
    Bài viết cuối: 22-10-2011, 08:43 AM
  4. Bài tập C Có bài mô phỏng khó quá, giúp mình với các pro
    Gửi bởi congdola trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 27-09-2011, 05:21 PM
  5. pro giúp bài tập về xâu có độ phức tạp 0(n) (bài khó)
    Gửi bởi asuka123456 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 20-12-2008, 10:57 PM

Tags của đề tài này

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn