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

Đề tài: Code tìm đường đi của ROBOT [Thảo luận]

  1. #1
    Ngày gia nhập
    02 2012
    Nơi ở
    hà nội
    Bài viết
    58

    Red face Code tìm đường đi của ROBOT [Thảo luận]

    Đường đi của robot
    Cho một bàng vuông (n n) ô (2<=n<=100) các ô ghi các số là 0 hoặc 1. Tìm đường đi của robot, từ góc trái trên xuống góc phải dưới theo nguyên tắc được dịch chuyển sang phải và xuống dưới sao cho các số trên đường đi tạo thành một số nhị phân có giá trị lớn nhất.
    Dữ liệu vào: ghi trong tệp tin văn bản Robot.inp gồm
    - Dòng đầu tiên ghi giá trị
    - N dòng tiếp theo, trên mỗi dòng ghi n số 0 hoặc 1 các số này cách nhau ít nhất 1 khoảng trống.
    Dữ liệu ra: Ghi vào tập tin văn bản robot.out gồm một số duy nhất là giá trị thập phân của số nhị phân được tạo thành ở trên.
    Ví dụ
    Robot.inp
    5
    1 0 1 1 0
    0 0 1 0 1
    0 0 1 0 1
    1 0 0 1 1
    1 1 0 1 0
    robot.out
    374

    //Một ngày ko nghĩ ra việc gì làm, nhớ bài robot lần trước có bạn gửi lên. Vì ham mê quá ko để ý bị baner. hihi. lần này minh quyết định viết gửi lên cho các bạn xem. hihi. vẫn chưa làm hết yêu cầu của đề nhưng ai thick thì sữa nhé. Mình làm theo ý mình.
    C Code:
    1. /*
    2. 0 1 1   0   1
    3. 0 0 0   0   0
    4. 1 1 0   1   0
    5. 1 1 1   1   1
    6. 1 1 1   1   1
    7. */
    8. #include<stdio.h>
    9. #include<conio.h>
    10. #include<stdlib.h>
    11. int* docFile(char *s,int *a,int *n)
    12. {
    13.      FILE *f=fopen(s,"r");
    14.      if(!f){
    15.             printf("Error!");
    16.             exit(0);
    17.      }
    18.      int i,j;
    19.      fscanf(f,"%d",&i);
    20.      *n=i;
    21.      a=(int*)malloc(i*i*sizeof(int));
    22.      for(i=0;i<*n;i++)
    23.      for(j=0;j<*n;j++)
    24.      fscanf(f,"%d",(a+i*(*n)+j));
    25.      fclose(f);
    26.      return a;
    27. }
    28. void printOut(int*a,int n)
    29. {
    30.      int i,j;
    31.      for(i=0;i<n;i++)
    32.      {
    33.                      printf("\n");
    34.                      for(j=0;j<n;j++)
    35.                      printf("%d\t",*(a+i*n+j));
    36.      }
    37.      return;
    38. }
    39. int* Robot(int *a,int n)
    40. {
    41.      int i=0,j=0;
    42.      int *b=(int*)malloc(n*n*sizeof(int));
    43.      *(b)=0;
    44.      for(j=1;j<n;j++)
    45.      *(b+j)=*(b+(j-1))+*(a+j);
    46.      for(i=1;i<n;i++)
    47.      *(b+i*n)=*(b+(i-1)*n)+*(a+i*n);
    48.      for(i=1;i<n;i++)
    49.      for(j=1;j<n;j++)
    50.      {
    51.                        if(*(b+(i-1)*n+j)>*(b+i*n+(j-1)))*(b+i*n+j)=*(b+(i-1)*n+j)+*(a+i*n+j);
    52.                        else *(b+i*n+j)=*(b+i*n+(j-1))+*(a+i*n+j);
    53.      }
    54.      return b;
    55. }
    56. void duongDiCuaROBOT(int*a,int n)
    57. {
    58.      int i=n-1,j=n-1;
    59.      printf("\nDuong di cua robot:\n[%d][%d]<-",i,j);
    60.      while(i>=0&&j>=0)
    61.      {
    62.                     *(a+(i-1)*n+j)>*(a+i*n+(j-1))?(i==0?j--:i--):(j==0?i--:j--);
    63.                    
    64.                     if(i<0||j<0){
    65.                                  printf("-Start!");
    66.                                  return;
    67.                     }
    68.                     else printf("[%d][%d]<-",i,j);
    69.      }
    70.      return;
    71. }
    72. int main(){
    73.     char *s="ROBOT.INP";
    74.     int n,*a;
    75.     a=docFile(s,a,&n);
    76.     printOut(a,n);
    77.     int *b=Robot(a,n);
    78.     printf("\nMa tran duong di cua ROBOT!\n");
    79.     printOut(b,n);
    80.     duongDiCuaROBOT(b,n);
    81.     printf("\nCT chay Thanh cong!");
    82.     free(a);
    83.     free(b);
    84.     getch();
    85. }
    Đã được chỉnh sửa lần cuối bởi kienquach : 30-12-2012 lúc 02:28 PM.
    + Quách Việt Kiên
    + Yahoo: Kaka_8x_vn
    + skype: kiencuongno1
    + Gmail: kiencuongno1@gmail.com
    Ai có thể free cho mình 50k thẻ điện thoại ko.

  2. #2
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Bài này DP đơn giản thôi, nếu bạn dùng ý tưởng đó thì đúng rồi.

  3. #3
    Ngày gia nhập
    09 2012
    Bài viết
    8

    Trích dẫn Nguyên bản được gửi bởi rox_rook Xem bài viết
    Bài này DP đơn giản thôi, nếu bạn dùng ý tưởng đó thì đúng rồi.
    DP là gì hả bạn?

  4. #4
    Ngày gia nhập
    01 2013
    Bài viết
    1,477

    Trích dẫn Nguyên bản được gửi bởi hitshootnum1 Xem bài viết
    DP là gì hả bạn?
    Quy hoạch động (Dynamic Programming).

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

  1. Giải thuật Thảo luận giải Sudoku bằng phương pháp suy luận logic
    Gửi bởi BDK trong diễn đàn Thắc mắc CTDL & Giải thuật
    Trả lời: 1
    Bài viết cuối: 26-03-2014, 11:05 PM
  2. [J2ME] bạn đã tối ưu code dự án J2ME như thế nào ? [cùng thảo luận]
    Gửi bởi zstar trong diễn đàn Lập trình Android và Java Mobile
    Trả lời: 8
    Bài viết cuối: 17-08-2012, 02:44 PM
  3. Algorithm Thảo luận về code search files trong windows = C# ????
    Gửi bởi cchangkhongayngo trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 15-11-2011, 09:26 AM
  4. Xây dựng Web robot với ASP.NET như thế nào?
    Gửi bởi Mr.Blue trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 3
    Bài viết cuối: 11-04-2010, 02:45 AM

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