Chủ đề: Cần tối ưu thuật toán bài này
-
18-08-2009, 01:34 PM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Cần tối ưu thuật toán bài này
em đang có bài này:
Nhập số liệu cho 2 dãy số thực a0 , a1 ,..., am-1 và b0 , b1 ,..., bn-1. Giả sử cả 2 dãy này đã được sắp theo thứ tự tăng dần. Hãy tận dụng tính sắp xếp của 2 dãy và tạo dãy c0 , c1 ,..., cm+n-1 là hợp của 2 dãy trên, sao cho dãy ci cũng có thứ tự tăng dần . (Gợi ý: So sánh và loại dần từng cặp phần tử của 2 dãy).
nhưng mà khổ nỗi làm thì làm được nhưng dài quá và rối rắm.
Xin được ai đã làm rồi chỉ cho một source đã làm để tham khảo! hic!
Xin cám ơn!View more random threads:
- Hỏi về biến động
- chuỗi, lập trình c
- Viết chương trình nhập vào một mảng số nguyên, in ra phần tử nhỏ nhất trong mảng
- Đọc ký tự trắng từ File .huf không được ???
- thắc mắc về code tìm đường đi bằng phương pháp leo đồi dốc đứng quay lui
- Cho em hỏi 1 bài C về số nguyên tố ạ
- Tương tác giữa chương trình với bộ nhớ máy tính
- Bài tập cơ bản về mãng .
- Lưu mảng là kiểu chuỗi
- Bài tập chỉ dùng while, do while, else if
-
19-08-2009, 05:47 PM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Chưa post code lên mà đòi tối ưu hóa thuật toán [IMG]images/smilies/17.gif[/IMG]
Cái gì cũng kêu khó vởi rối rắm thì bao giờ mới khá được.Xin xỏ thì cho code 1 lần vậy
Mã nguồn PHP:#include <stdio.h> #include <conio.h> #define max 100 //Khai bao nguyen mau ham // int nhapmang(char ,int ,int) ; int tronmang(int ,int ,int ,int ,int) ; //Trien khai ham// int nhapmang(char c,int a[],int n) { int i; for(i=0;i<n;i++) { printf("%c[%d]=",c,i+1); scanf("%d",&a[i]); } return(0); } int tronmang(int a[],int m,int b[],int n,int c[]) { int i=0,j=0,k; for(k=0;k<m+n;k++) { if(i>=m || j>=n) break; if(a[i]<b[j]) { c[k]=a[i]; i++; } else { c[k]=b[j]; j++; } } if(i<m) while(i<m) c[k++]=a[i++]; if(j<n) while (j<n) c[k++]=b[j++]; printf("MANG DUOC TRON LA :
"); for(i=0;i<m+n;i++) printf("%2d",c[i]); return(0); } void main() { clrscr(); int a[max],b[max],c[2*max]; int m,n,i; printf("nhap so phan tu cua mang a:"); scanf("%d",&m); printf("nhap so phan tu cua mang b:"); scanf("%d",&n); nhapmang('a',a,m); nhapmang('b',b,n); tronmang(a,m,b,n,c); getch(); }
-
21-08-2009, 12:46 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
bạn đã chắc chắn chưa?
bạn hình như cũng chỉ làm theo hướng dẫn của thuật toán hay sao ý!
bạn đã bao giờ xét một dãy như này :
1 2 3 3 4 5 6
1 2 2 3 3 4
bao giờ chưa?
đảm bảo nó sẽ ko trộn thành 1 2 3 4 5 6 đâu! ko cần chạy cũng biết!
nhưng do bạn nhiệt tình với mình nên mình cũng nói là mình đã tìm ra cách rồi cám ơn bạn! để giải quyết được cặn kẽ bài này tuy ko nói là sẽ ngắn như bạn nhưng mình cảm thấy tối ưu rồi!
đó là với dãy kia mình sẽ thêm một hàm tối ưu nữa là
biến
1 2 3 3 4 5 6
1 2 2 3 3 4
thành
1 2 4 5 6
1 2 3 4
lúc đó sẽ làm được như bạn làm trường hợp! chứ ko phải là làm ngay như thế được!
thế nên mình mới nói là cần có cái ngắn một tí!
-
23-08-2009, 11:39 AM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Bạn ơi làm ơn đọc dùm lại cái đề bài .Mảng C là mảng hợp của 2 mảng.Bạn cho ví du. xét 2 dãy : 1 2 3 3 4 5 6
1 2 2 3 3 4
mà trộn thành 1 2 3 4 5 6.Mảng được trộn là mảng hợp à.Lần sau suy nghĩ kĩ trước khi nói.
Còn nếu theo yêu cấu lúc sau của bạn thì mình có cách giải quyết là tạo hàm xóa phần tử trùng nhau của hàm đj là được sau đó vẫn trộn như trên ko vấn đề.
Bất chấp những lầm tưởng phổ quát, hồ hết những người có âm đạo đều khó lên đỉnh khi bị kích thích âm đạo. Tuy nhiên, điều đó không có tức thị nó không thể vui được! Việc xâm nhập vào âm đạo bằng...
Quý bà giải tỏa bằng việc kích...