Trang 2 / 4 FirstFirst 1234 LastLast
Hiển thị kết quả từ 11 đến 20 / 31

Chủ đề: Bài làm chơi

  1. #11
    Tham gia
    05-06-2009
    Location
    Tuyên Quang
    Bài viết
    656
    Like
    0
    Thanked 4 Times in 3 Posts
    Cái inp 1 bạn tìm = tay xem đồng giả là cái nào đi.

  2. #12
    Tham gia
    27-05-2008
    Location
    bình định
    Bài viết
    692
    Like
    0
    Thanked 10 Times in 6 Posts
    j hoặc k hoặc l nặng hơn

  3. #13
    Tham gia
    05-06-2009
    Location
    Tuyên Quang
    Bài viết
    656
    Like
    0
    Thanked 4 Times in 3 Posts
    Sặc. Xuống nghĩa là cái bên phải nhẹ hơn.
    (Đọc lại đề)
    => G hoặc I là giả.
    Mà kể cả như thế thì làm sao xác định được 1 đồng giả.
    Bài này không thể có chữ "HOẶC"

  4. #14
    Tham gia
    27-05-2008
    Location
    bình định
    Bài viết
    692
    Like
    0
    Thanked 10 Times in 6 Posts
    uhm , thanks Q , thôi ko cãi nữa , cả 2 đều hiểu đề rồi , có ý tưởng gì thì nói nhé ^^

    [=========> Bổ sung bài viết <=========]

    à mà xuống nghĩa là nặng hơn chứ !đọc lại đề đi Q
    Được sửa bởi bld lúc 21:28 ngày 22-07-2009 Reason: Bổ sung bài viết

  5. #15
    Tham gia
    05-06-2009
    Location
    Tuyên Quang
    Bài viết
    656
    Like
    0
    Thanked 4 Times in 3 Posts
    Mình nghĩ thế này:
    Vẫn như cũ, nhưng input như bld vừa rồi là không thể tìm ra.
    Nếu mà chỉ có 1 cái ko phải là bằng và ko loại ra được như test đầu thì nghĩa là ko tìm được.
    P/S: Cãi gì đâu, tranh luận thôi. Tranh luận thế giúp hiểu rõ bản chất hơn chứ. Việc gì phải sợ. Sai đâu sửa đấy mà.

  6. #16
    Tham gia
    19-07-2008
    Location
    CĐV-Phú Tân-Cà Mau
    Bài viết
    124
    Like
    0
    Thanked 2 Times in 2 Posts
    Đề này tàu lao quá, nhỡ test không theo thuật toán đúng, thì sao tìm ra đồng xu giả.
    Mình tìm được demo của bài cân bi, cũng tương tự bài này, nhưng trực quan hơn. Mọi người xem thử nha.

    Code:
    Program bai5; 
    Uses crt; 
    Const
    st1=' nang hon.'; 
    st2=' nhe hon.'; 
    Var i, kq1: integer; 
    kq2: string; 
    ch: char; 
    (* Thu tuc Kq *)
    Procedure kq(a: integer; b: string); 
    Begin
    kq1:=a; 
    kq2:=b;
    End;
    (* Thu tuc Can *)
    Procedure can(lan: integer; t1, t2, t3, t4, p1, p2, p3, p4: string);
    Begin
    Writeln('Lan can thu', lan, ' :');
    Writeln;
    Writeln(' ', t1, ' ', t2, ' ', t3, ' ', t4, '    ', p1, ' ', p2, ' ', p3, ' ', p4);
    Writeln;
    Write(' Ben nao nang hon? Trai(t)/Phai(p)/ Hay can bang(c)');
    Repeat
    ch:=readkey;
    ch:=upcase(ch);
    Until (ch in ['P', 'T', 'C']);
    Writeln(ch);
    Writeln(*==========================================*);
    End;
    (* Thu tuc Play *)
    Procedure play;
    Begin
    Writeln('Co 12 qua can: 1 2 3 4 5 6 7 8 9 10 11 12');
    Writeln('Cho phep ban chon ra mot qua can nang hon hay nhe hon nhung qua khac.');
    can(1, '1', '2', '3', '4', '5', '6', '7', '8');
    If (ch='T') then {T}
    Begin
    can(2, '1', '2', '5', ' ', '3', '4', '6', ' ');
    If (ch='T') then {TT}
    Begin
    can(3, '1', '6', ' ', ' ', '7', '8', ' ', ' ');
    If ch='T' then kq(1, st1); {TTT}
    If ch='P' then kq(6, st2); {TTP}
    If ch='C' then kq(2, st1); {TTC}
    End
    Else If (ch='P') then {TP}
    Begin
    can(3, '3', '5', ' ', ' ', '7', '8', ' ', ' '); 
    If ch='T' then kq(3, st1); {TPT}
    If ch='P' then kq(5, st2); {TPP}
    If ch='C' then kq(4, st1); {TPC}
    End
    Else If (ch='C') then {TC}
    Begin
    can(3, '7', ' ', ' ', ' ', ' ', '8', ' ', ' '); 
    If ch='T' then kq(8, st2); {TCT}
    If ch='P' then kq(7, st2); {TCP}
    If ch='C' then 
    Begin 
    Writeln('Tra loi sai!'); kq2:=st2;
    End; 
    End; 
    End
    Else If (ch='P') then {P}
    Begin
    can(2, '5', '6', '1', ' ', '7', '8', '2', ' '); 
    If (ch='T') then {PT}
    Begin
    can(3, '5', '2', ' ', ' ', '3', '4', ' ', ' '); 
    If ch='T' then kq(5, st1); 
    If ch='P' then kq(2, st2); 
    If ch='C' then kq(6, st1); 
    End
    Else If (ch='P') then {PP}
    Begin
    can(3, '7', '1', ' ', ' ', '3', '4', ' ', ' ');
    If ch='T' then kq(7, st1); 
    If ch='P' then kq(1, st2); 
    If ch='C' then kq(8, st1); 
    End
    Else If (ch='C') then {PC}
    Begin
    can(3, '3', ' ', ' ', ' ', ' ', '4', ' ', ''); 
    If ch='T' then kq(4, st2);
    If ch='P' then kq(3, st2); 
    If ch='C' then 
    Begin
    Writeln('Tra loi sai !'); kq2:=st2; 
    End;
    End;
    End
    Else If (ch='C') then {C}
    Begin
    can(2, '9', '10', '11', ' ', '1', '2', '3', ' '); 
    If (ch='T') then 
    {CT}
    Begin
    can(3, '9', ' ', ' ', ' ', '10', ' ', ' ', ' ');
    If (ch='T') then kq(9, st1);
    If (ch='P') then kq(10, st1); 
    If (ch='C') then kq(11, st1); 
    End
    Else If (ch='P') then {CP}
    Begin
    can(3, '9', ' ', ' ', ' ', '10', ' ', ' ', ' '); 
    If (ch='T') then kq(10, st2); 
    If (ch='P') then kq(9, st2); 
    If (ch='C') then kq(11, st2); End
    Else If (ch='C') then {CC}
    Begin
    can(3, '12', ' ', ' ', ' ', '1', ' ', ' ', ' '); 
    If (ch='T') then kq(12, st1); 
    If (ch='P') then kq(12, st2); 
    If (ch='C') then Writeln('Tra loi sai!');
    kq1:=12; 
    End; 
    End; 
    End; 
    (* Chuong trinh chinh*)
    Begin
    Clrscr; 
    play; 
    Writeln(' Qua thu', kq1, kq2);
    Writeln(' Nhan Enter ket thuc...'); 
    Readln; 
    End.
    Bài này mình lấy từ đâu quên mất tiêu ời, sr tác giả

  7. #17
    Tham gia
    27-05-2008
    Location
    bình định
    Bài viết
    692
    Like
    0
    Thanked 10 Times in 6 Posts
    theo "thuật toán đúng" thì mỗi lần cân phải đúng 4 quả mỗi dĩa và cân theo đúng 1 trình tự duy nhất đã xác định ,(như code trên của a nhat_truong )
    nhưng mà yêu cầu đề bài ở đây là khác với yêu cầu tìm ra quả cân khác biệt của code trên
    với inp thế này vẫn tìm dc quả cân khác biệt
    A B bang
    B C bang
    C D xuong

    vậy là biết ngay ông D nặng hơn
    dĩ nhiên inp đưa vào sẽ dc sắp xếp để luôn suy ra dc kq
    bây giờ công việc của ta là tìm ra kq chứ ko phải tìm xem sẽ cân như thế nào , bi73 vì kq các lần cân đã có

  8. #18
    Tham gia
    28-06-2007
    Location
    HCM
    Bài viết
    270
    Like
    0
    Thanked 9 Times in 9 Posts
    input của bài không nói là 2 bên cân phải nhất thiết là 4đồng xu, và cách cân thì input đa cho sắn rồi, chúng ta chỉ cần dựa vào kq cân mà đưa ra kq đồng xu giả.

    nói luôn: xảo thuật là các thủ thuật dùng trong khi code, để chương trình chạy nhanh hơn và tốt hơn. Nếu 2 người dùg cùng 1 tư tưởng thuật toán, thì người nhanh hơn sẽ là người có xảo thuật tốt hơn.

    bài này vét cạn là đúg, nhưng làm sao để code ra đựoc kq?

  9. #19
    Tham gia
    27-05-2008
    Location
    bình định
    Bài viết
    692
    Like
    0
    Thanked 10 Times in 6 Posts
    uhm , vậy e nghĩ đúng rồi ^^, nhưng mà vét cạn là vét cạn chứ xảo thuật gì đâu ?(hay e chưa nghĩ ra)
    thử từng đồng xu giả sử là giả , rồi nếu cân ra đúng kết quả như dự đoán thì in ra kq

    [=========> Bổ sung bài viết <=========]

    @ quang : hừ , sợ gì đâu , lần sau mình sẽ xem lại cách dùng từ "cãi" và "tranh luận"
    Được sửa bởi bld lúc 09:19 ngày 23-07-2009 Reason: Bổ sung bài viết

  10. #20
    Tham gia
    13-12-2008
    Location
    Vũng Tàu
    Bài viết
    393
    Like
    0
    Thanked 2 Times in 2 Posts
    Code:
    const fi='dongxu.inp';
          fo='dongxu.out';
    
    type  bien=record
          s1,s2,gt:string;
    end;
    
    var   f:text;
          s:string;
          a:array[1..3] of bien;
          dd:array['a'..'l'] of byte;
          i,j,k,l:integer;
    
    procedure danhdau(s:string);
    var   i:integer;
    begin
          for i:=1 to length(s) do
                dd[s[i]]:=2;
    end;
    
    procedure inp;
    begin
          fillchar(dd,sizeof(dd),0);
          assign(f,fi);
          reset(f);
          for i:=1 to 3 do
          begin
                readln(f,s);
                j:=1;
                k:=4;
                while j<=length(s) do
                begin
                      dec(k);
                      while s[j]= ' ' do inc(j);
                      l:=j+1;
                      while s[l]<>' ' do inc(l);
                      if k=3 then a[i].s1:=copy(s,j,l-j);
                      if k=2 then a[i].s2:=copy(s,j,l-j);
                      if k=1 then a[i].gt:=copy(s,j,l-j);
                      j:=l+1;
                      danhdau(a[i].s1);danhdau(a[i].s2)
                end;
          end;
          close(f);
    end;
    
    procedure sol;
    begin
          for i:=1 to 3 do
                if a[i].gt='bang' then
                      for j:=1 to length(a[i].s1) do
                      begin
                            dd[a[i].s1[j]]:=1;
                            dd[a[i].s2[j]]:=1;
                      end;
    end;
    
    procedure pri;
    var   x:char;
    begin
          assign(f,fo);
          rewrite(f);
          for x:='a' to 'l' do
                if dd[x]=2 then
                begin
                      write(f,x);
                      close(f);
                      halt; 
                end;
          for x:='a' to 'l'do
                if dd[x]=0 then write(f,x);
          close(f);
    end;
    
    begin
          inp;
          sol;
          pri;
    end.
    các bạn test thử & cho ý kiến nha , mình sợ nó chỉ đúng trong 1 số trường hợp vì mình làm cách đơn giản àh
    ý tưởng : nếu 2 đĩa cân nào = nhau thì mình đánh dấu . Cuối cùng mình sẽ in ra phần tử chưa đc đánh dấu , đó chính là đồng xu giả .Do t/c bắc cầu , ta có thể dễ dàng cm đc điều trên nếu chỉ có duy nhất 1 đồng xu giả

    [=========> Bổ sung bài viết <=========]

    trong ct này , mình gặp 1 vấn đề .Các bạn cho ý kiến lun nhá
    inp : abcd efgh bang
    Mình mún sau lệnh readln(f,s1,s2,gt) thì cho kq s1= abcd ; s2= efgh ; s3= bang nhưng mình f7 lại thấy s1 = abcd efgh bang , s2=' ', gt=' '. Mình đành phải đọc chuỗi s ùi cắt ra . Có cách nào hay hơn k ?

    [=========> Bổ sung bài viết <=========]

    test này cho inp :
    ABCD EFGH bang
    ABCI EFJK len
    ABIJ EFGH bang

    Nhưng đề có quá nhiều lỗ hổng : ngay trên inp này thì đồng xu L k đc cân , vậy liệu có bik đc nó là giả hay thật ?

    Mình cũng đã nghĩ tới trường hợp , nếu inp k có 'bang'
    vd :
    ABCD EFGH lên
    AICD EFGJ lên
    AI FJ lên
    ==> A là đồng xu giả ( theo test ) .Vậy còn n~ đồng còn lại k đc cân, ai bik nó giả hay thật ==> inp phải có 'bang'

    [=========> Bổ sung bài viết <=========]

    Nếu mún code chặt chẽ hơn thì khi đọc a[i].gt có thể kt .Nếu tất cả đều là 'bang' thì in ra "k có đồng xu giả" , code mình chưa kt nên file out sẽ rỗng
    Được sửa bởi hang_vt lúc 19:22 ngày 23-07-2009 Reason: Bổ sung bài viết

Trang 2 / 4 FirstFirst 1234 LastLast

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •