Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 16 kết quả

Đề tài: Di chuyển giữa các thành phố

  1. #1
    Ngày gia nhập
    11 2017
    Bài viết
    15

    Mặc định Di chuyển giữa các thành phố

    Hôm nay thầy lại cho 1 bài khác : Cho các thành phố, TP thứ x có thể đi tới TP x + 1 hoặc đi tới TP y > x.
    INPUT : Dòng đầu là số nguyên n, n - 1 dòng sau, ghi 1 số nguyên. Dòng thứ i ghi số a(i) tức là từ TP i có thể đi tắt tới TP thứ a(i) khi a(i) > i, nếu a(i) = i thì TP thứ i chỉ có thể đi tới TP i + 1.
    OUTPUT : Số cách đi từ TP thứ 1 => TP thứ n.
    Ex:
    INPUT :
    4
    1
    2
    4

    OUTPUT:
    2 (1 => 2 => 3 => 4 và 1 => 2 => 4)

    Đây là code em làm nhưng thầy bảo sai, mọi ng` chỉ giúp em với

    Code:
    #include <bits/stdc++.h>
    
    using namespace std;
    
    int main()
    {
    	int n, a[100000], idem = 1;
    	cin>>n;
    	for (int i = 0; i < n - 1; i++)
    		{cin>>a[i];
    		if (a[i] == i || a[i] == i + 1)
    		continue;
    		else if (a[i] - i >= 2)
    		idem++;}
    	for (int i = 0; i < n - 1; i++)
    	    for (int j = 0; j < n - 1; j++)
    	        if (i == a[j] && a[i] - i >= 2 && a[j] - j >= 2)
    	        idem++;
    	cout<<idem;
    }

  2. #2
    Ngày gia nhập
    12 2015
    Nơi ở
    Đà Nẵng
    Bài viết
    311

    Trích dẫn Nguyên bản được gửi bởi Silverbullet069 Xem bài viết
    Hôm nay thầy lại cho 1 bài khác : Cho các thành phố, TP thứ x có thể đi tới TP x + 1 hoặc đi tới TP y > x.
    INPUT : Dòng đầu là số nguyên n, n - 1 dòng sau, ghi 1 số nguyên. Dòng thứ i ghi số a(i) tức là từ TP i có thể đi tắt tới TP thứ a(i) khi a(i) > i, nếu a(i) = i thì TP thứ i chỉ có thể đi tới TP i + 1.
    OUTPUT : Số cách đi từ TP thứ 1 => TP thứ n.
    Ex:
    INPUT :
    4
    1
    2
    4

    OUTPUT:
    2 (1 => 2 => 3 => 4 và 1 => 2 => 4)

    Đây là code em làm nhưng thầy bảo sai, mọi ng` chỉ giúp em với

    Code:
    #include <bits/stdc++.h>
    
    using namespace std;
    
    int main()
    {
    	int n, a[100000], idem = 1;
    	cin>>n;
    	for (int i = 0; i < n - 1; i++)
    		{cin>>a[i];
    		if (a[i] == i || a[i] == i + 1)
    		continue;
    		else if (a[i] - i >= 2)
    		idem++;}
    	for (int i = 0; i < n - 1; i++)
    	    for (int j = 0; j < n - 1; j++)
    	        if (i == a[j] && a[i] - i >= 2 && a[j] - j >= 2)
    	        idem++;
    	cout<<idem;
    }
    C++ Code:
    1. #include <iostream>
    2. #include <vector>
    3. using namespace std;
    4.  
    5. int a[]={3,2,6,4,6,9,7,8,12};
    6. vector<int> vecto;
    7. int n;
    8. int dem=0;
    9. void init()
    10. {
    11.     n=sizeof(a)/sizeof(a[0]);
    12.     vecto.reserve(n);
    13. }
    14. void hienthi()
    15. {
    16.     for(int i=0;i<vecto.size();i++)
    17.     {
    18.         cout.width(3);
    19.         cout<<vecto[i];
    20.     }
    21.     cout<<endl;
    22.     dem++;
    23. }
    24. void duyet(int i)
    25. {
    26.     vecto.push_back(i);
    27.     if(i==n)
    28.     {
    29.         hienthi();
    30.     }
    31.     else
    32.     {
    33.         duyet(i+1);
    34.         if((a[i-1]!=i)&&(a[i-1]!=i+1))
    35.         {
    36.             duyet(a[i-1]);
    37.         }
    38.     }
    39.     vecto.pop_back();
    40. }
    41. void main()
    42. {
    43.     init();
    44.     duyet(1);
    45.     cout<<dem;
    46.     getchar();
    47. }

  3. #3
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất nhiều sóng gió
    Bài viết
    447

    Trích dẫn Nguyên bản được gửi bởi Silverbullet069 Xem bài viết
    Hôm nay thầy lại cho 1 bài khác : Cho các thành phố, TP thứ x có thể đi tới TP x + 1 hoặc đi tới TP y > x.
    INPUT : Dòng đầu là số nguyên n, n - 1 dòng sau, ghi 1 số nguyên. Dòng thứ i ghi số a(i) tức là từ TP i có thể đi tắt tới TP thứ a(i) khi a(i) > i, nếu a(i) = i thì TP thứ i chỉ có thể đi tới TP i + 1.
    OUTPUT : Số cách đi từ TP thứ 1 => TP thứ n.
    Ex:
    INPUT :
    4
    1
    2
    4

    OUTPUT:
    2 (1 => 2 => 3 => 4 và 1 => 2 => 4)
    ...
    Vì sao từ 2 có thể đi tắt đến 4?
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  4. #4
    Ngày gia nhập
    11 2017
    Bài viết
    15

    Trích dẫn Nguyên bản được gửi bởi Ada Xem bài viết
    Vì sao từ 2 có thể đi tắt đến 4?
    i = 2, b(i) = 4 nên có thể đi tắt đến 4

  5. #5
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất nhiều sóng gió
    Bài viết
    447

    Trích dẫn Nguyên bản được gửi bởi Silverbullet069 Xem bài viết
    i = 2, b(i) = 4 nên có thể đi tắt đến 4
    b(i) là gì thế?

    Theo file dữ liệu thì:

    n = 4. Không biết n là gì, chắc là số thành phố?
    a(1) = 1
    a(2) = 2
    a(3) = 4
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  6. #6
    Ngày gia nhập
    11 2017
    Bài viết
    15

    Mặc định Di chuyển giữa các thành phố

    Trích dẫn Nguyên bản được gửi bởi Ada Xem bài viết
    b(i) là gì thế?

    Theo file dữ liệu thì:

    n = 4. Không biết n là gì, chắc là số thành phố?
    a(1) = 1
    a(2) = 2
    a(3) = 4
    à ừ, n là số thành phố.
    4
    (1) 1
    (2) 4
    (3) 4
    nhé bạn, mình viết vậy cho dễ hiểu.

  7. #7
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất nhiều sóng gió
    Bài viết
    447

    Trích dẫn Nguyên bản được gửi bởi Silverbullet069 Xem bài viết
    à ừ, n là số thành phố.
    4
    (1) 1
    (2) 4
    (3) 4
    nhé bạn, mình viết vậy cho dễ hiểu.
    Mình vẫn không hiểu. Theo dữ liệu mới này, từ 2 có thể đi [tắt] đến 4, nhưng theo đề bài

    TP thứ x có thể đi tới TP x + 1 hoặc đi tới TP y > x.
    nghĩa là khả năng này hoặc khả năng kia, chứ không được cả hai, nên nảy sinh thắc mắc mới là:

    vì sao từ 2 có thể đi được đến 3?
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  8. #8
    Ngày gia nhập
    11 2017
    Bài viết
    15

    [QUOTE=Ada;911936]Mình v
    Đề bài nó chỉ mang tính tổng quát thôi, ở ví dụ mình cho
    (1) 1
    tức thành phố 1 ko có khả năng đi tắt, chỉ có thể đi tới 2
    (2) 4
    tức thành phố 2 có thể đi tắt đến 4, ngoài ra thì 2 vẫn có thể đi tới 3, input đã cho mình một con đường mới
    (3) 4
    thành phố 3 đi "tắt" đến 4, ở đây coi như là ko có khả năng đi tắt.

  9. #9
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất nhiều sóng gió
    Bài viết
    447

    Trích dẫn Nguyên bản được gửi bởi Silverbullet069 Xem bài viết
    Đề bài nó chỉ mang tính tổng quát thôi, ở ví dụ mình cho
    ...
    (2) 4
    tức thành phố 2 có thể đi tắt đến 4, ngoài ra thì 2 vẫn có thể đi tới 3, input đã cho mình một con đường mới
    ...
    OK. Mình đã hiểu được phần nào, nhưng nói tổng quát, thì vẫn còn thắc mắc thế này: khi input file cho a(i) = j, với j > i+1, thì nghĩa là có hai đường đi trực tiếp, từ i đến i+1 và đến j, hay là có nhiều đường đi trực tiếp, cụ thể là từ i đến i+1, i+2, i+3, ..., j?
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  10. #10
    Ngày gia nhập
    11 2017
    Bài viết
    15

    Trích dẫn Nguyên bản được gửi bởi Ada Xem bài viết
    OK. Mình đã hiểu được phần nào, nhưng nói tổng quát, thì vẫn còn thắc mắc thế này: khi input file cho a(i) = j, với j > i+1, thì nghĩa là có hai đường đi trực tiếp, từ i đến i+1 và đến j, hay là có nhiều đường đi trực tiếp, cụ thể là từ i đến i+1, i+2, i+3, ..., j?
    có 2 thôi bạn nhé, từ i đến i + 1 và từ i đến j

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