Chủ đề: Xuất dãy con tăng dài nhất
-
09-09-2009, 05:20 PM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Xuất dãy con tăng dài nhất
Viết CT nhập vào một dãy các số nguyên:
--> Xuất ra màn hình dãy tăng dài nhất.
VD: Nhập: 1 2 3 4 2 5 8 3 6 9
Xuất: 1 2 3 4
Các bạn giúp mình thuật giải nhé![IMG]http:/guoibentre.com/diendan/images/smilies/onion/68.gif[/IMG] Mình có search rồi mà không có!View more random threads:
- Góp ý và sửa lỗi code về các thao tác với mảng
- khi nào return 1, khi nào return 0?
- tháo tác nhập xuất và sử dụng file.txt
- Em đang cần gấp bài tập C vừa và khó có lời giải chi tiết, mong mọi người share link giúp e.tks
- Operator>>
- Nhập vào hai số nguyên dương từ bàn phím. Xuất ra màn hình ước chung lớn nhất va bội số chung nhỏ nhất!
- Cần giúp bài tập C về hệ đếm tự chế (hệ đếm có ký tự != hệ Hex)
- anh em giúp mình bài này với
- Cho hỏi vấn đề C rất hay
- Tài liệu hay về lập trình C
-
09-09-2009, 05:29 PM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Dễ mà, đầu tiên cắt ra thành các dãy con, ví dụ 1 2 3 4 2 5 8 3 6 9 thì cắt thành 3 dãy
1 2 3 4
2 5 8
3 6 9
Sau đó chọn dãy nào dài nhất in ra
-
09-09-2009, 05:48 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
ờh!! Cắt ra thì cắt được rồi...rồi làm sao mà chọn dãy dài nhất?
-
09-09-2009, 05:52 PM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
bài này làm được với 1 vòng for đấy, thử đi, à ko tính vòng for để in ra đâu nhé [IMG]images/smilies/wink.png[/IMG]
-
09-09-2009, 05:56 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi thulinhsoi
ví dụ 1 2 3 4 2 5 8 3 6 9
thì cắt ở các vị trí 4 và 2, 8 và 3.
Chịu khó suy nghĩ thì sẽ thấy (thật ra nhìn vào là thấy chứ chả cần suy nghĩ nữa) 4 > 2, 8 > 3. Vậy cắt tại vị trí giữa a và b với a > b.
Chọn dãy dài nhất thì bạn đếm độ dài từng dãy rồi lấy cái dài nhất ra chứ sao, vậy cũng hỏi =))
-
09-09-2009, 06:06 PM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Xài qui hoạch động đi bạn. Nhưng mình nghĩ là 2 dòng for. Còn 1 dòng for như windows nói thì potay.com. Vì mình xét từng phần tử, với mỗi phần tử phải xét các phần tử trước nó nữa.
Thêm 1 mảng nữa. Xét xem if phần tử thứ i thuộc dãy con dài nhất thì nó đứng mấy, bằng cách xét các phần tử nhỏ hơn đứng trước nó, if trước nó k có phần tử nhỏ hơn thì d[i]=1.
-
09-09-2009, 06:18 PM #7Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Lúc trước có người hỏi rồi, câu hỏi gần tương tự. Bạn xem cái này nhé:
Xuất ra mảng lớn nhất, trong đó các phần tử đều khác nhau:
Mã nguồn PHP:#include<stdio.h>#include<conio.h>#include<time.h>#include<stdlib.h>#define MAX 20int search(int, int[],int);//SEARCH 1 PHAN TU TRONG MOT MANG XEM CO TON TAI KHONGint main(){ struct abcd { int chisodau; int chisocuoi; }; abcd mangc[MAX-1]; int manga[MAX],mangb[MAX]; int x; srand(time(NULL)); for(int i=0;i<MAX;i++) { x=rand()%100; //Tao cac so ngau nhien co gia tri tu 0 den 100 manga[i]=x; } //THICH NHAP TAY THI DUNG CAI NAY /*for(int i=0;i<MAX;i++) { printf("
Nhap vao phan tu thu %d: ",i+1); scanf("%d",&manga[i]); }*/ printf("
Mang vua nhap:
"); for(int i=0;i<MAX;i++) { printf("%d ",manga[i]); } int chisomangc=0; for(int i=0;i<MAX-1;i++) { int j=1; mangb[0]=manga[i]; for(int k=i+1;k<MAX;k++) { //printf("
search: %d
",search(manga[i],mangb,j)); if(!search(manga[k],mangb,j)) { //printf("
k=%d, bo %d vao mang.
",k, manga[k]); mangb[j++]=manga[k]; if(k==MAX-1) { mangc[chisomangc].chisodau=i; mangc[chisomangc].chisocuoi=k; //printf("
(%d,%d)",mangc[chisomangc].chisodau,mangc[chisomangc].chisocuoi); chisomangc++; break; } } else { if(j>1) { mangc[chisomangc].chisodau=i; mangc[chisomangc].chisocuoi=k-1; //printf("
(%d,%d)",mangc[chisomangc].chisodau,mangc[chisomangc].chisocuoi); chisomangc++; } break; } } } int max=0; int indexc=0; max=mangc[0].chisocuoi-mangc[0].chisodau; for(int i=1;i<chisomangc;i++) { if(mangc[i].chisocuoi-mangc[i].chisodau>max) { max=mangc[i].chisocuoi-mangc[i].chisodau; indexc=i; } } printf("
Mang dai nhat:
"); for(int i=mangc[indexc].chisodau;i<=mangc[indexc].chisocuoi;i++) { printf("%d ",manga[i]); } getch(); return 0; }int search(int x, int mang[], int j)//j la so phan tu cua mang{ for(int i=0;i<j;i++) { if(mang[i]==x) return 1; } return 0;}
-
10-09-2009, 02:46 PM #8Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Bài này mình tìm trên mạng...về có sửa lại đôi chút..mà mình không hiểu lắm...có bạn nào làm ơn chú thích các câu lệnh dùm mình được chứ?
Mã nguồn PHP://day tang #include <stdio.h> #include <conio.h> int a[30],n,i, maxstart, maxend, maxlen, tmpstart, tmpend, tmplen; void nhap() { printf("
Nhap vao so phan tu cua day :"); scanf("%d",&n); for (i=0;i<n;i++) { printf("Nhap phan tu thu %d: ",i); scanf("%d",&a[i]); } } void xuat() { printf("
Day da cho:
"); /* for (i=maxstart;i<maxend;i++) printf("%3d",a[i]); */ for (i=0;i<n;i++) printf("%3d",a[i]); } void daytang() { maxstart=maxend=tmpstart=tmpend=0; maxlen = tmplen = 1; for (i=1;i<n;i++) { if (a[i]<a[tmpend]) { if (maxlen<tmplen) { maxstart=tmpstart; maxend=tmpend; maxlen=tmplen; } tmpstart=tmpend=i; tmplen=1; } else { tmplen++; tmpend++; } } if (maxlen<tmplen) { maxstart=tmpstart; maxend=tmpend; } printf("
Day tang co so phan tu nhieu nhat la:
"); for (i=maxstart;i<=maxend;i++) printf("%3d",a[i]); getch(); } void main() { clrscr(); nhap(); xuat(); daytang(); }
Điều quan trọng trong quan hệ, nam giới cần cho dương vật đi vào bao cao su nữ. Một vài người nhận thấy cảm giác ở cậu bé có vẻ hoạt động tốt phải thâm nhập sâu giữa bên ngoài bao cao su và thành âm...
Lời khuyên cho nàng trước khi sử...