Hỏi đáp mọi chủ đề liên qua đến công nghệ thông tin, internet, lập trình, SEO...
Nội quy chuyên mục: Hỏi đáp mọi chủ đề liên qua đến công nghệ thông tin, internet, lập trình, SEO...

- Chuyên nhận giải đáp thắc mắc sử dụng Word, Excel, Power Point

- Ai cần download driver hay Firmware cho máy tính máy in, thì vào đây nhé, tìm gì cũng có Driver 360

- Cập nhật tin tức với Mr Công nghệ tại đây
By [email protected]
#683698 các ac ơi cho hỏi chút.thầy ra cho bọn e đề kiểm tra tin như sau:
cho dãy số nguyên A=a1,a2,...an. một dãy con của A là 1 cách chọn ra trong A một số phần tử giữ nguyên thứ tự.yêu cầu, tìm dãy con đơn điệu tăng của A có độ dài lớn nhất bắt đầu từ a1.

có anh chị nào biết thì giúp e nhé,gợi ý ý tưởng giùm e...Thank các anh các chị rất nhiều.
giải bằng pascal nhé.
By Angelo
#684052 Thật tình .. chả hiểu cái đề cho lắm >> sau khi mình dùng phần mềm Google 2013 .. vào menu Search Bài toán "Dãy con đơn điệu tăng dài nhất" >> chương trình đã IT sub ra 1 bài viết : Bấm vào đây để đăng nhập và xem link!


Bài đó dc viết bằng C++

Code: void main()
{
int a[m] = {1,4,5,9,2,6,7,10}; //dãy A
int l[m]; //l[i]: độ dài DCĐĐTDN của dãy a[0],..,a[i] mà có chứa a[i]
int t[m]; //t[i]: vị trí phần tử ngay phía trước a[i] trong DCĐĐTDN của dãy a[0],..,a[i]

// Bước 1. Lập bảng phương án (tính mảng L và T)
l[0] = 1; t[0] = -1;
for (int i=1; i<m; i++)
{
int max = 1; //độ dài DCĐĐTDN của dãy a[0],..,a[i]
for (int j=0; j<i; j++)
if (a[j] < a[i] && max < l[j] + 1)
{
max = l[j] + 1;
t[i] = j; //để sau này truy vết: phần tử ngay phía sau a[i] là a[j]
}
l[i] = max;
}

//Bước 2. Tìm vị trí cuối của DCĐĐTDN
int lMax = 0; //độ dài DCĐĐTDN của dãy A
int viTriMax = 0; //a[viTriMax] sẽ là phần tử cuối cùng trong DCĐĐTDN của dãy A
for (int i=1; i<m; i++)
if (l[i] > lMax)
{
lMax = l[i];
viTriMax = i;
}

//Bước 3. Truy vết để tìm DCĐĐTDN (kq): dựa vào T và viTriMax
int kq[m];
int k = lMax-1;
do {
kq[k] = a[viTriMax];
k--;
viTriMax = t[viTriMax];
}while (k>=0);

//Bước 4. Xuất kết quả
printf("
- Day A: "); //Hiển thị dãy A
for (int i=0; i<m; i++) printf("%d ", a[i]);
printf("
- Day con don dieu tang dai nhat: "); //Hiển thị DCĐĐTDN
for (int i=0; i<lMax; i++) printf("%d ", kq[i]);
printf("
(gom %d phan tu)", lMax);
getch(); //dừng màn hình để xem kết quả
} Nhưng việc viết bằng pascal cũng đơn giản .. bạn này chỉ cần dựa theo nó là viết dc .. code dễ hiểu lắm .. pascal chỉ sửa lại lệnh là ok ! có j thì mình sẽ giải thích .. mặc dù đã bỏ pascal lâu rùi T.T
By Brantley
#684054 có 1 box về lập trình pascal ở đây



và tui cũng quên pascal từ lâu rồi
Kết nối đề xuất:
Learn Synonym
Advertisement