Windows Việt

Cộng Đồng Công Nghệ Thông Tin Việt

Trang ChínhTrang Chính  Sự kiện  Tìm kiếmTìm kiếm  Đăng kýĐăng ký  Đăng NhậpĐăng Nhập  

Share
 
 Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy)
Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Chuyển đến trang : 1, 2  Next
Tác giảThông điệp
voduy
Member

voduy
Member
Giới tính : Nam
Tuổi : 38
Posts Posts : 82
Coins Coins : 302
Thanked Thanked : 96
Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy) Empty

Lớp mình sắp thi tốt nghiệp rôi, hi vọng sẽ gặp lại các bạn trên lớp hoàn chỉnh. Tình hinh forum có vẻ buồn. A xin phép làm vài topic khởi động thi Tôt nghiep:
Chỉ cài đặt 1 hàm (không lồng các hàm con tương tự nhau vào chung)để kiểm tra tính thứ tự của 1 mảng số nguyên n(n>=2) phần tử. Kết quả trả về như sau:
- +1: nếu mảng tăng
- -1: nếu mảng giảm
- 0: nếu mảng ko tăng ko giảm.
- Bạn nào có lời giải chính xác sớm nhất sẽ được admin(Phú Đại Gia Sài Thành) thưởng 1 ifone VIP(chém thui). Chiến đi các bạn, vui là chính. Nhiều còm men sẽ có kỳ 2,...


Được sửa bởi voduy ngày Tue 05 Jul 2011, 19:38; sửa lần 2.

※ Bài viết cùng chuyên mục


Tác giảThông điệp
nmbao89
Member

nmbao89
Member
Giới tính : Nam
Tuổi : 31
Posts Posts : 77
Coins Coins : 296
Thanked Thanked : 29
Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy) Empty
Bài gửiTiêu đề: Em thử trước   Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy) EmptyTue 05 Jul 2011, 18:38

Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy) Tt1s


0867007


Được sửa bởi nmbao89 ngày Tue 05 Jul 2011, 21:06; sửa lần 4.

※ Bài viết cùng chuyên mục


http://www.mediafire.com/nmbao89
Tác giảThông điệp
voduy
Member

voduy
Member
Giới tính : Nam
Tuổi : 38
Posts Posts : 82
Coins Coins : 302
Thanked Thanked : 96
Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy) Empty

Bài của Bảo chưa đuợc:
1: tràn bộ nhớ khi i==n
2: kết quả phụ thuộc vào bộ cuối (i-1,i) khi i==n(hoặc i==n-1) =>không kiểm tra được các bộ đầu vì cur thay đôi liên tục.

※ Bài viết cùng chuyên mục


Tác giảThông điệp
daokiem_votinh64
Member

daokiem_votinh64
Member
Giới tính : Nam
Tuổi : 31
Posts Posts : 556
Coins Coins : 2157
Thanked Thanked : 168
Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy) Empty

Code:

int KTTangGiam(int a[],int n)
{
   int flag[2]={0,0};
   for(int i=0;i<=n-2;i++)
   {
      if(a[i]<a[i+1])
         flag[1]=1;//neu mang tang
      if(a[i]>a[i+1])
         flag[0]=-1;//neu mang giam
   }
   if((flag[0]!=0 && flag[1]!=0) ||(flag[0]==0 && flag[1]==0))
      return 0;
   if(flag[0]!=0 && flag[1]==0)
      return -1;
   return 1;
}

Anh Duy cho em gop vui.

※ Bài viết cùng chuyên mục


Tác giảThông điệp
Administrator
Administrators

Administrator
 Administrators
Giới tính : Nam
Tuổi : 30
Posts Posts : 2804
Coins Coins : 5864
Thanked Thanked : 799
Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy) Empty

Góp nhận xét xíu nha mọi người Very Happy
Ham vui xíu ^^ :

Code:
int KTM(int a[], int n)
{
   int tang = 1, giam = 1, ktkg = 1;
  for (int i = 0; i < n-1; i++)
  {
      if (a[i] <= a[i+1])
      {
        tang++;
       if (a[i] == a[i+1])
          ktkg++;
       if (ktkg == n)
          return 0;
        if (tang == n)
            return 1;
      }
      if (a[i] >= a[i+1])
      {
        giam++;
       if (a[i] == a[i+1])
          ktkg++;
       if (ktkg == n)
          return 0;
        if (giam == n)
            return -1;
      }
  }
  return 0;
}


[You must be registered and logged in to see this link.]


Được sửa bởi Administrator ngày Wed 06 Jul 2011, 00:52; sửa lần 2.

※ Bài viết cùng chuyên mục


https://windows.forumvi.com
Tác giảThông điệp
vuthevinh
Member

vuthevinh
Member
Giới tính : Nam
Tuổi : 30
Posts Posts : 105
Coins Coins : 120
Thanked Thanked : 10
Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy) Empty

Chém tí nào !

Code:
int KTM(int a[], int n)
{
   int kt = 0;
   for(int i = 0; i <= n-2;i++)
   {
      if(a[i] < a[i+1])
      {
         if(kt == -1)
            return 0;
         else kt = 1;
      }
      if(a[i] > a[i+1])
      {
         if(kt == 1)
            return 0;
         else kt = -1;
      }
   }      
   return kt;
}


0867173

※ Bài viết cùng chuyên mục


Tác giảThông điệp
Toend2008
Member

Toend2008
Member
Giới tính : Nam
Tuổi : 21
Posts Posts : 377
Coins Coins : 564
Thanked Thanked : 33
Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy) Empty

Dưới này là bài của em:
Code:

int KiemTraBienThien(float a[], int n){
   int flag = 0;
   int dem ;
   for(int i = 0; i<n-1; i++){
         if(a[i] < a[i+1]){// xay ra truong hop tang dan
            flag++;
         }
         if(a[i] > a[i+1]){// xay ra truong hop giam dan
            flag--;
         }
   }
   dem = abs(flag);
   if(dem == n-1 && flag > 0)
      return 1;
   if(dem == n-1 && flag < 0)
      return -1;
   return 0;
}


[You must be registered and logged in to see this link.]

※ Bài viết cùng chuyên mục


Tác giảThông điệp
master1990
Member

master1990
Member
Giới tính : Nam
Tuổi : 29
Posts Posts : 126
Coins Coins : 261
Thanked Thanked : 68
Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy) Empty

Mình thấy bài của giang nhanh gọn dễ hiễu Very Happy

※ Bài viết cùng chuyên mục


Tác giảThông điệp
changtraisitinh
Member

changtraisitinh
Member
Giới tính : Nam
Tuổi : 30
Posts Posts : 405
Coins Coins : 914
Thanked Thanked : 113
Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy) Empty

nộp bài kiểu này anh Duy chấm mệt chết thui, ai test mấy bài kia cũng có thể cho ý kiến mà! góp bài luôn

Code:
int KTThuTuMang_1(int a[], int n)
{
   int tang = 0, giam = 0;
   for (int i=0; i<n; i++)
   {
      if(a[i] > a[i+1]) //giam
         giam = 1;
      if(a[i] < a[i+1]) //tang
         tang = 1;
   }
   if(tang == 0 && giam == 0 || tang == 1 && giam == 1)
      return 0;
   else if(tang == 1 && giam == 0)
      return 1;
   else
      return -1;
}

>>> bom


Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy) Vtc14653vtc13203nohacks

※ Bài viết cùng chuyên mục


https://windows.forumvi.com
Tác giảThông điệp
voduy
Member

voduy
Member
Giới tính : Nam
Tuổi : 38
Posts Posts : 82
Coins Coins : 302
Thanked Thanked : 96
Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy) Empty

Thật là vui vì sau bài Thách đố 1 nhận được reply nhiệt tình của a e. A có 1 số nhận xét về các bài như sau:
1- Bài của Bảo : sử lý được trường hợp ktkg, nhưng gặp a[0]>a[1] => return mà ko chạy tiếp kiểm tra.
2- Bải của Nghiệp,Phú,Vinh,Giang,Hiệp: anh thật sự bất ngờ vì các bạn đưa nhiều lời giải với ý tưởng hay. Cụ thể :
a.Nghiệp,Vinh,Hiệp: ý tưởng 3 bạn kiểm tra bằng cờ tăng giảm, ngắn gọn, sai sót duy nhất trong trường hợp mảng :1 1 1 2 chẳng hạn => flag[0]=0,flag[1]=1=> mảng tăng, chỉnh sửa 1 chút nữa thôi:(bài của Nghiệp-bài Vinh, Tâm tương tự)

Code:

int KTTangGiam(int a[],int n)
{
  int flag[2]={0,0};
  for(int i=0;i<=n-2;i++)
  {
      //thêm kiểm tra bằng nhau vào đây
      if(a[i]==a[i+1])
        return 0;
      //--------------
      if(a[i]<a[i+1])
        flag[1]=1;//neu mang tang
      if(a[i]>a[i+1])
        flag[0]=-1;//neu mang giam
  }
  if((flag[0]!=0 && flag[1]!=0) ||(flag[0]==0 && flag[1]==0))
      return 0;
  if(flag[0]!=0 && flag[1]==0)
      return -1;
  return 1;
}
b.Phú,Giang: theo a ý tưởng của 2 bạn rất độc đáo trong khi bài này đa phần đều sử dụng cờ thì các bạn dùng kỹ thuật đếm: trong mảng tăng thì số cặp liên kề i,i+1 tăng là n-1. Bài của Phú bị tràn số(sơ sót nhỏ), nên return ngoài for để phần kiễm tra dễ hiểu và dư phần ktkg(chỉ cần ktt và ktg là ok)
Như vậy thách đố kỳ 1: Giang Cùi bắp đã thắng(hihi đừng giận, a ghẹo tí thui) phần trao giải liên hệ nhà tài trợ Phú Đại Gia.
Nếu không có gì trục trặc, tối nay a post tiếp phần thách đố kỳ 2. Mời các thí sinh và khán giả tiếp tục theo tham gia và theo dõi. Mọi người comment nhiệt tình lên để chủ thớt sung sức thêm nào.
Nếu có ý tưởng gì hay để tổ chức thi đua học thuật vui vẻ mọi người cứ góp ý nhé.


Được sửa bởi voduy ngày Wed 06 Jul 2011, 20:40; sửa lần 1.

※ Bài viết cùng chuyên mục


Tác giảThông điệp
Administrator
Administrators

Administrator
 Administrators
Giới tính : Nam
Tuổi : 30
Posts Posts : 2804
Coins Coins : 5864
Thanked Thanked : 799
Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy) Empty

Anh Duy xem lại giùm bài em nha Very Happy thật ra không có tràn số mà

Code:
for (int i = 0; i < n-1; i++)

có nghĩa là i chạy từ 0 cho đến n-2 thôi anh à Very Happy

Và số đếm của em cho bắt đầu từ 1 nên có thể so sánh == n luôn mà anh


[You must be registered and logged in to see this link.]

※ Bài viết cùng chuyên mục


https://windows.forumvi.com
Tác giảThông điệp
Toend2008
Member

Toend2008
Member
Giới tính : Nam
Tuổi : 21
Posts Posts : 377
Coins Coins : 564
Thanked Thanked : 33
Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy) Empty

Cám ơn anh Duy đã chọn bài Em(em cũng thấy cùi bắp vì đã sử dụng đến 2 biến, lẽ ra em chỉ nên dùng 1 biến flag thì hay hơn), Chờ anh Duy có bài mới. Chúc mọi người vui vẻ!!!


[You must be registered and logged in to see this link.]

※ Bài viết cùng chuyên mục


Tác giảThông điệp
daokiem_votinh64
Member

daokiem_votinh64
Member
Giới tính : Nam
Tuổi : 31
Posts Posts : 556
Coins Coins : 2157
Thanked Thanked : 168
Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy) Empty

Anh Duy ơi,theo ví dụ của anh
1 1 1 2 thì mảng tăng => bài của em vẫn đúng mà.

p/s:bài pác Hiệp sao giống em thế,giống bài là 0 điểm đó nha.
mấy bài kiểu này anh Duy nên chấm theo kiểu ít dòng code mà đúng thắng mới hay nhỉ Laughing

※ Bài viết cùng chuyên mục


Tác giảThông điệp
Administrator
Administrators

Administrator
 Administrators
Giới tính : Nam
Tuổi : 30
Posts Posts : 2804
Coins Coins : 5864
Thanked Thanked : 799
Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy) Empty

Nếu nói chấm thắng thì nên chấm bài của Vinh thắng. Vì bài của Nghiệp phải dùng thêm 1 cái mảng nữa. Máy phải xử lý 2 cái mảng lận.


[You must be registered and logged in to see this link.]

※ Bài viết cùng chuyên mục


https://windows.forumvi.com
Tác giảThông điệp
changtraisitinh
Member

changtraisitinh
Member
Giới tính : Nam
Tuổi : 30
Posts Posts : 405
Coins Coins : 914
Thanked Thanked : 113
Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy) Empty

phải chi có chức năng vote thì chắc hay hơn hen! ? tất nhiên người chấm cuối cùng vẫn là anh Duy hj
>>> bom


Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy) Vtc14653vtc13203nohacks

※ Bài viết cùng chuyên mục


https://windows.forumvi.com
Tác giảThông điệp
nmbao89
Member

nmbao89
Member
Giới tính : Nam
Tuổi : 31
Posts Posts : 77
Coins Coins : 296
Thanked Thanked : 29
Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy) Empty

Thanks anh nhiều, năm cuối rồi mà em học chẳng tới đâu, lần sau sẽ cố gắng hơn...!


0867007

※ Bài viết cùng chuyên mục


http://www.mediafire.com/nmbao89
Tác giảThông điệp
daokiem_votinh64
Member

daokiem_votinh64
Member
Giới tính : Nam
Tuổi : 31
Posts Posts : 556
Coins Coins : 2157
Thanked Thanked : 168
Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy) Empty

cho em hỏi mảng tăng là mảng k có phần tử nào đứng sau lớn hơn phần tử đứng trước thui chứ nhỉ.vậy mảng 1 1 1 2 vẫn là tăng mà.
nếu sai các pác thử viết hàm kiểm tra mảng có tăng dần hay k thì biết em nói đúng hay sai chứ nhỉ.

※ Bài viết cùng chuyên mục


Tác giảThông điệp
Administrator
Administrators

Administrator
 Administrators
Giới tính : Nam
Tuổi : 30
Posts Posts : 2804
Coins Coins : 5864
Thanked Thanked : 799
Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy) Empty

Đúng là 1 1 1 2 nên cho là tăng, chờ ý kiến anh Duy vậy.


[You must be registered and logged in to see this link.]

※ Bài viết cùng chuyên mục


https://windows.forumvi.com
Tác giảThông điệp
changtraisitinh
Member

changtraisitinh
Member
Giới tính : Nam
Tuổi : 30
Posts Posts : 405
Coins Coins : 914
Thanked Thanked : 113
Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy) Empty

[You must be registered and logged in to see this link.] đã viết:
p/s:bài pác Hiệp sao giống em thế,giống bài là 0 điểm đó nha.

hjhj ý tưởng lớn gặp nhau đó mà!

bài này anh Duy lấy trong sách KTLT ra đó mà, giải tiếp chắc sẽ đụng bài tiếp theo của ảnh thui.
>>> bom


Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy) Vtc14653vtc13203nohacks

※ Bài viết cùng chuyên mục


https://windows.forumvi.com
Tác giảThông điệp
vuthevinh
Member

vuthevinh
Member
Giới tính : Nam
Tuổi : 30
Posts Posts : 105
Coins Coins : 120
Thanked Thanked : 10
Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy) Empty

Ôi, nhầm rồi ông anh. Mảng 1 1 1 2 theo lý thuyết là mảng tăng !
Dẫn nguồn :
Code:
Cho dãy A[1], A[2],..., A[n], nói rằng A là một dãy tăng nếu A[1] £ A[2] £ ... £ A[n], tương tự, A là dãy giảm nếu A[1] ³ A[2] ³ ... ³ A[n]. Dãy đồng nhất A[1]=A[2]= ... =A[n] là trường hợp đặc biệt, vừa là dãy tăng, vừa là dãy giảm.
Ví dụ:
Dãy 1 3 3 5 5 6 6 6 là dãy tăng
Dãy 9 9 8 5 5 4 0 0 là dãy giảm
Dãy 1 3 3 2 5 4 6 6 là dãy không tăng không giảm.

Như vậy chỉ có duy nhất trường hợp mảng đồng nhất là "vừa tăng vừa giảm" là đáng bàn, Tuy nhiên anh Duy ra đề lại không đề cập tới trường hợp này nên a/e gom luôn vào t/h "không tăng không giảm" là hợp lý thôi.

Cuối cùng, chỉ duy nhất bài của e là xài 1 biến cờ hiệu, còn lại là từ 2 trở lên. Xét thấy có oan ức nên mới ý kiến, chủ thớt xem lại nhá ! Very Happy


0867173

※ Bài viết cùng chuyên mục


Tác giảThông điệp
Administrator
Administrators

Administrator
 Administrators
Giới tính : Nam
Tuổi : 30
Posts Posts : 2804
Coins Coins : 5864
Thanked Thanked : 799
Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy) Empty

Nếu xét cả trường hợp mảng vừa tăng vừa giảm, thì xem ra bài của chú vinh bị loại mất rồi Smile Vì 1 biến không đủ return giá trị kiểm tra.


[You must be registered and logged in to see this link.]

※ Bài viết cùng chuyên mục


https://windows.forumvi.com
Tác giảThông điệp
Toend2008
Member

Toend2008
Member
Giới tính : Nam
Tuổi : 21
Posts Posts : 377
Coins Coins : 564
Thanked Thanked : 33
Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy) Empty

Mình thấy cách của bạn vuthevinh linh hoạt hơn khi sử lý được ở trường hợp không tăng, không giảm mà không cần xét hết mảng. Với cách này thì phải dùng nhiều if else đó là chuyện không tránh khỏi.
Lập trình ít dòng code, mà chi phí tính toán cao thì chưa là cách hay. Mình nghĩ phải có các yếu tố đi kèm như code sáng sủa, chi phí tính toán thấp (sử dụng ít biến và ít bộ nhớ ram), hạng chế dùng vòng lặp, các if else đến mức có thể được mà không làm thay đổi kết quả bài toán thì tốt.
Cách của mình thì dễ tiếp cận hơn và vẫn có thể sử dụng được 1 biến tuy nhiên chưa sử lý linh hoạt trường hợp không tăng, không giảm ngay từ đầu (mình thấy vấn đề này hay nhất ở bài toán này). Vì thế Cách bạn vuthevinh sẽ chạy nhanh hơn cách mình.
Nhưng đây là topic trao đổi thuật toán và nâng cao trình độ cho anh em mình, có cần thiết ai dành giải đâu, anh Duy muốn chúng ta tham gia topic này học được các ý tưởng hay, mới lạ cơ mà.
Chúc Anh Em Vui!!!


[You must be registered and logged in to see this link.]

※ Bài viết cùng chuyên mục


Tác giảThông điệp
vuthevinh
Member

vuthevinh
Member
Giới tính : Nam
Tuổi : 30
Posts Posts : 105
Coins Coins : 120
Thanked Thanked : 10
Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy) Empty

Thanks Phú, nhưng 1 biến vẫn xử lý được. Nếu như đề bài có nêu cả trường hợp "vừa tăng vừa giảm", giả sử giá trị trả về cho t/h này là 2 thì chỉ cần lúc đầu khởi gán cho biến kt = 2 thôi là ok ngay.


0867173

※ Bài viết cùng chuyên mục


Tác giảThông điệp
daokiem_votinh64
Member

daokiem_votinh64
Member
Giới tính : Nam
Tuổi : 31
Posts Posts : 556
Coins Coins : 2157
Thanked Thanked : 168
Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy) Empty

theo mình k có khái niệm mảng vừa tăng vừa giảm,chỉ có không tăng không giảm thui.Bài của Vinh Ý tưởng hay đó.Đánh giá 1 thuật toán chạy nhanh hay chậm còn tùy nhiều vấn đề và tùy trường hợp nữa.Nói chung qua bài nay anh em sáng mắt lên dc chút đỉnh Razz.

Chuận bị chờ thách đố kỳ 2 của Anh Duy đi,giải thưởng k quan trọng ,mà quan trọng là anh em có nơi chém gió để chuận bị thi là vui òi Laughing

※ Bài viết cùng chuyên mục


Tác giảThông điệp
voduy
Member

voduy
Member
Giới tính : Nam
Tuổi : 38
Posts Posts : 82
Coins Coins : 302
Thanked Thanked : 96
Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy) Empty

Hihi anh em comment nhiệt tình quá, vui là chính mà, lỗi là do a đưa đề mà ko chính xác khái niệm tăng giảm, mỗi người 1 ý, nhưng mà ... giám khảo vẫn là trùm.. hehe. Tiếp tục qua bài 2 nhỉ, mọi người giải bài dữ quá, phải kiếm bài nào ác chiến 1 chút mới được. Hy vọng mọi người có thêm chút kinh nghiệm sau các bài giải trí này.

※ Bài viết cùng chuyên mục


Tác giảThông điệp
Sponsored content


Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy) Empty

※ Bài viết cùng chuyên mục


 
Thách đô kỳ 1, môn kỹ thuật lập trình (Võ Duy)
Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 2 trangChuyển đến trang : 1, 2  Next

Permissions in this forum:Bạn không có quyền trả lời bài viết
Windows Việt :: Lưu Trữ :: Lưu Trữ - Các môn học cũ :: Kỹ Thuật Lập Trình-
[Windows Việt] Deverloped by Nguyễn Gia Phú - https://windows.forumvi.com
Powered by © Forumotion.com - phpBB™ version ©phpBB2
Go to top Go to bottom