1. Tuyển Mod quản lý diễn đàn. Các thành viên xem chi tiết tại đây

Bài toán chuỗi số vòng tròn - gấp quá, em chỉ hỏi trong 24h thôi

Chủ đề trong 'Toán học' bởi fatmailer, 15/01/2007.

  1. 0 người đang xem box này (Thành viên: 0, Khách: 0)
  1. long40d

    long40d Thành viên rất tích cực

    Tham gia ngày:
    14/06/2002
    Bài viết:
    1.028
    Đã được thích:
    0
    http://homel.vsb.cz/~pha023/_matlab/fatmaider.m
  2. fatmailer

    fatmailer Thành viên mới

    Tham gia ngày:
    12/02/2005
    Bài viết:
    2.266
    Đã được thích:
    0
    Được các cao thủ chỉ giáo, quả là hạnh phúc. Trước tiên em xin cảm ơn tất cả các bác đã cùng đóng góp ý kiến.
    Sau khi nộp coursework, em đâm đầu vào ôn thi nên không tiện trả lời (dù có vào đọc), hôm nay xong xuôi em mới lên nói lời cảm ơn. Điền tiên sinh (Đ Qh 20) quả nhiên tài nghệ bất phàm, đọc qua đã cho ra code liền. Dàn giáo thòng tiên sinh kiến thức uyên thâm, nhiệt tình tốt bụng, gặp người có khúc mắc là ra tay tương trợ. Long tiên sinh (Cho không dê 40d) văn chương một bụng, chu đáo cẩn thận, sửa code, upload và PM vô cùng chi tiết. Còn thằng ôn tungsin chả được vẹo gì toàn vào uốn éo, bác nào có trách nhiệm treo giúp em cái nick nó lên vài ngày với, em xin cảm ơn ạ.
    Một lần nữa xin chân thành cảm ơn các bác. Chúc các bác và gia đình một năm mới nhiều tài lộc.
    Chúc các anh chị em trong box sức khoẻ dồi dào, tiếp tục theo đuổi niềm đam mê toán học, để box ta ngày càng vững mạnh.

    Em: Trần Mập
    Được fatmailer sửa chữa / chuyển vào 16:43 ngày 01/02/2007
  3. long40dphay

    long40dphay Thành viên mới

    Tham gia ngày:
    09/03/2003
    Bài viết:
    87
    Đã được thích:
    0
    function quang=fatmaider(a)
    Step=0;
    flag=true;
    n=length(a);
    while flag
    Sophantu=0;
    Step=Step+1;
    min=0;
    heso=1;
    for i=1:Step
    min=min+a(Step+1-i)*heso;
    heso=heso*10;
    end
    for i=1:n
    mi=0;
    heso=1;
    for j=i:Step+i-1
    mi=mi+a(mod(Step+i+i-j-2,n)+1)*heso;
    heso=heso*10;
    end
    if mi<min
    min=mi
    end
    end
    for i=1:n
    mi=0;
    heso=1;
    for j=i:Step+i-1
    mi=mi+a(mod(Step+i+i-j-2,n)+1)*heso;
    heso=heso*10;
    end
    if mi==min
    Sophantu=Sophantu+1;
    end
    end
    if Sophantu==1
    flag=false;
    end
    end
    for i=1:n
    mi=0;
    heso=1;
    for j=i:Step+i-1
    mi=mi+a(mod(Step+i+i-j-2,n)+1)*heso;
    heso=heso*10;
    end
    if mi==min
    Sophantu=i
    end
    end
    for i=1:n
    b(i)=a(mod(i+Sophantu-2,n)+1);
    end
    quang=b;

  4. werty98

    werty98 Thành viên gắn bó với ttvnol.com

    Tham gia ngày:
    17/06/2003
    Bài viết:
    8.178
    Đã được thích:
    5.571
    Thoáng nhìn cứ tưởng là Pascal . Cả đống if và for như thế thì Matlab nó chóng mặt lắm. Với lại tính ra giá trị bằng số rồi mới so sánh như thế gặp chuỗi dài vài trăm số thì chết. Thử cái này xem sao:

    function minpos = cyclic_string(str)
    str = (str:-)))'';
    N = length(str);
    str = [str,str];
    minpos = 1;
    for pos = 2 : N
    if array_cmp(str(minpos : minpos + N - 1), str(pos : pos + N - 1)) > 0
    minpos = pos;
    end
    end
    disp(''Min string:'');
    str(minpos : minpos + N - 1)
    function retval = array_cmp(array1, array2)
    tmp = (array1 > array2) - (array1 < array2);
    idx = find(tmp ~= 0);
    if length(idx) > 0
    retval = tmp(idx(1));
    else
    retval = 0;
    end

    Được werty98 sửa chữa / chuyển vào 18:16 ngày 26/02/2008

Chia sẻ trang này