Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: [ Solved ]Mình mới nhập môn có 1 bài vướng mắc, mong các bạn giúp đỡ

  1. #1
    Ngày gia nhập
    09 2008
    Bài viết
    1

    Mặc định [ Solved ]Mình mới nhập môn có 1 bài vướng mắc, mong các bạn giúp đỡ

    Đề bài là nhập 2 chuỗi số. Sau đó in ra chuỗi chung lớn nhất của 2 chuỗi số đó (có sắp xếp theo thứ tự từ trái sang phải)
    VD1
    input chuỗi 1:14356791
    chuỗi 2: 1321
    in ra chuỗi 131 là chuỗi chung lớn nhất
    VD2
    input chuỗi 1: 14356791
    chuỗi 2: 1136
    in ra chuỗi 136 là chuỗi chung lớn nhất
    mình đang học bằng C,có thêm cái thứ tự khó hiểu mong các bạn giúp cho

  2. #2
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Bài trên của bạn khá hay và khó. Tuy nhiên bạn post bài hỏi lung tung quá, tiêu đề lại không rõ ràng. Mình đã del hết các bài nội dung như này ở box C rồi, mong bạn thông cảm và sửa lại tiêu đề bài trên. Đề cử "Hỏi về tìm chuỗi chung lớn nhất của 2 chuỗi số"

  3. #3
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Đây là code bài trên của bạn, mình thấy chưa hài lòng lắm nhưng thỏa mãn được 2 ví dụ bạn đưa ra.
    Code:
    /*Nhap vao 2 chuoi so, in ra chuoi con lon nhat cua 2 chuoi so (dung theo thu tu tu trai sang phai)
       vd: a=14356791
           b=1321
    		  ->131
    	   a=14356792
    	   b=1236
    	      ->136
    
    */
    #include <stdio.h>
    #include <string.h>
    
    char* Test(char a[], char b[], int y, char c[]);
    
    int main()
    {
    	char a[20],b[20],c[20];
    	printf(" - Enter string a = ");gets(a);
    	fflush(stdin);
    	printf(" - Enter string b = ");gets(b);
    	int n=strlen(Test(a,b,0,c));
    	int m=strlen(Test(b,a,0,c));
    	if (n>m) printf(" -> Result: %s",Test(a,b,0,c));
    	else printf(" -> Result: %s",Test(b,a,0,c));
    
    }
    
    char* Test(char a[], char b[], int y, char c[])
    {
    	int n=strlen(a);
    	int m=strlen(b);
    	int i,j=0,t=0,x=0;
    	for (i=y;i<n;i++)
    	{
    		j=t;
    		while(j<m)
    		{
    			if (a[i]==b[j])
    			{
    				c[x]=a[i];x++;
    				break;
    			}
    			j++;
    		}
    		if (j<m) t=j+1;
    	}
    	c[x]='\0';
    	return c;
    }

  4. #4
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Style của R2 nhà mình.

    Về giải thuật thì không khó. Bạn chỉ duyệt qua từng phần tử, nếu trùng thì đưa vào 1 mảng kết quả, khi kết thúc thì xuất mảng kq ra.

    Ko biết còn cách nào hay hơn ko ?

  5. #5
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Style của R2 nhà mình.

    Về giải thuật thì không khó. Bạn chỉ duyệt qua từng phần tử, nếu trùng thì đưa vào 1 mảng kết quả, khi kết thúc thì xuất mảng kq ra.

    Ko biết còn cách nào hay hơn ko ?
    Hi, lúc đầu đọc đề mình cũng tưởng ngon ăn vậy, nhưng bắt tay làm mới thấy khoai khoai. kidkid thử làm bài này đi xem có cách mới ổn hơn không cho mọi người tham khảo.

  6. #6
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Mặc định [ Solved ]Mình mới nhập môn có 1 bài vướng mắc, mong các bạn giúp đỡ

    Cũng cách của R2 thôi, không nghĩ ra cái gì mới.

  7. #7
    Ngày gia nhập
    07 2007
    Nơi ở
    TP.HCM
    Bài viết
    199

    R2 là gì vậy ?!?!?

    Mình thấy thuật toán của QuangHoang hình như khong ổn lắm.
    Bạn test 2 chuỗi:
    a = 14356791
    b = 259137049
    Nó ra 591, trong khi đáp đúng ra là 1379

    Bài này tương tự bài tìm chuỗi đơn điệu tăng dài nhất.
    Dùng quy hoạch động.

    C++ Code:
    1. #include <stdio.h>
    2. #include <string.h>
    3. #include <conio.h>
    4.  
    5. struct STRINGINFO
    6. {
    7.     int len;
    8.     int next;
    9.     int pos;
    10. };
    11.  
    12. char* FindString(char* a, char* b, char* res)
    13. {
    14.     int lenA = strlen(a);
    15.     int lenB = strlen(b);
    16.  
    17.     STRINGINFO* arrInfo = new STRINGINFO[lenB + 1];
    18.     memset(arrInfo, 0, sizeof(STRINGINFO) * (lenB + 1));
    19.  
    20.     arrInfo[lenB].pos = lenA;
    21.  
    22.     for (int i = lenB - 1; i >= 0; --i)
    23.     {
    24.         int max = i, k = 0;
    25.         for (int j = i + 1; j <= lenB; ++j)
    26.         {
    27.             k = arrInfo[j].pos;
    28.  
    29.             while (--k >= 0)
    30.             {
    31.                 if (b[i] == a[k]) break;
    32.             }
    33.  
    34.             if (k >= 0 && arrInfo[max].len <= arrInfo[j].len)
    35.             {
    36.                 max = j;
    37.                 arrInfo[i].pos = k;
    38.             }
    39.         }
    40.  
    41.         if (i != max)
    42.         {
    43.             arrInfo[i].len = arrInfo[max].len + 1;
    44.             arrInfo[i].next = max;
    45.            
    46.         }
    47.     }
    48.  
    49.     int max = 0;
    50.     for (i = 1; i < lenB; ++i)
    51.     {
    52.         if (arrInfo[max].len < arrInfo[i].len)
    53.             max = i;
    54.     }
    55.  
    56.     i = max;
    57.     int j = 0;
    58.     while (arrInfo[i].len)
    59.     {
    60.         res[j++] = b[i];
    61.         i = arrInfo[i].next;
    62.         if (!i) break;
    63.     }
    64.     res[j] = 0;
    65.  
    66.     delete arrInfo;
    67.     return res;
    68. }
    69.  
    70. void main()
    71. {
    72.     while (1)
    73.     {
    74.         char a[128], b[128], c[128];
    75.         printf("Chuoi a: ");    scanf("%s", a);
    76.         printf("Chuoi b: ");    scanf("%s", b);
    77.  
    78.         printf("Chuoi chung max: %s\n", FindString(a, b, c));
    79.     }
    80. }
    Đã được chỉnh sửa lần cuối bởi DKhanh : 24-09-2008 lúc 03:44 PM.

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

  1. Mong nhận được sự giúp đỡ của mọi người về cách đặt chỗ trên web viết bằng ASP.NET
    Gửi bởi kunkun1991 trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 0
    Bài viết cuối: 15-04-2013, 12:37 AM
  2. invalid-password mới gia nhập diễn đàn, mong mọi người giúp đỡ
    Gửi bởi invalid-password trong diễn đàn Giải trí - Thư giãn
    Trả lời: 0
    Bài viết cuối: 04-09-2012, 12:44 PM
  3. Lập trình C++| Lỗi không nhập được giữ liệu vào file. Mong các bạn giúp đỡ?
    Gửi bởi duybinh.ptit trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 04-06-2009, 03:18 PM
  4. Cách chuyển đổi các hệ số, mong nhận được giúp đỡ
    Gửi bởi ngochan011290 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 02-04-2009, 06:14 PM
  5. Viết hàm nhập so nguyên dương-Mong mọi ngưởi giúp đỡ
    Gửi bởi heaven007 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 27-12-2007, 06:06 PM

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