Lập trình, thuật toán
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.


Lập trình C/C++, java. Thuật toán
 
Trang ChínhLatest imagesTìm kiếmĐăng kýĐăng Nhập
Đăng Nhập
Tên truy cập:
Mật khẩu:
Đăng nhập tự động mỗi khi truy cập: 
:: Quên mật khẩu
Tìm kiếm
 
 

Display results as :
 
Rechercher Advanced Search
Latest topics
» Thông báo offline lần 1
NKPALIN - 0.43s I_icon_minitimeWed Dec 07, 2011 12:16 pm by dinhha

» Chưa hiểu rõ đề CONANSP và FSOFT
NKPALIN - 0.43s I_icon_minitimeMon Dec 05, 2011 1:53 pm by dinhha

» Thuật toán qui hoạch động (Dynamic programing)
NKPALIN - 0.43s I_icon_minitimeSun Dec 04, 2011 6:21 pm by letrongngoc

» Khởi động lại nào!
NKPALIN - 0.43s I_icon_minitimeThu Dec 01, 2011 11:54 am by TrungHieu11

» Bài tập tuần 1 của Hưng cùi bắp
NKPALIN - 0.43s I_icon_minitimeMon Nov 07, 2011 10:37 pm by TrungHieu11

» Codeforces Beta Round #93
NKPALIN - 0.43s I_icon_minitimeSat Nov 05, 2011 12:23 am by TrungHieu11

» Mở thêm thư mục "Các môn học ở trường"
NKPALIN - 0.43s I_icon_minitimeThu Nov 03, 2011 3:05 pm by TrungHieu11

» code bài 1
NKPALIN - 0.43s I_icon_minitimeMon Oct 31, 2011 7:42 pm by TrungHieu11

» Báo cáo lý lịch
NKPALIN - 0.43s I_icon_minitimeMon Oct 31, 2011 6:39 pm by fallinlove2011

Top posters
TrungHieu11
NKPALIN - 0.43s I_vote_lcapNKPALIN - 0.43s I_voting_barNKPALIN - 0.43s I_vote_rcap 
fallinlove2011
NKPALIN - 0.43s I_vote_lcapNKPALIN - 0.43s I_voting_barNKPALIN - 0.43s I_vote_rcap 
dinhha
NKPALIN - 0.43s I_vote_lcapNKPALIN - 0.43s I_voting_barNKPALIN - 0.43s I_vote_rcap 
thenguyen27192
NKPALIN - 0.43s I_vote_lcapNKPALIN - 0.43s I_voting_barNKPALIN - 0.43s I_vote_rcap 
liveislife
NKPALIN - 0.43s I_vote_lcapNKPALIN - 0.43s I_voting_barNKPALIN - 0.43s I_vote_rcap 
lovestorm_6390
NKPALIN - 0.43s I_vote_lcapNKPALIN - 0.43s I_voting_barNKPALIN - 0.43s I_vote_rcap 
lehonghoa
NKPALIN - 0.43s I_vote_lcapNKPALIN - 0.43s I_voting_barNKPALIN - 0.43s I_vote_rcap 
letrongngoc
NKPALIN - 0.43s I_vote_lcapNKPALIN - 0.43s I_voting_barNKPALIN - 0.43s I_vote_rcap 

 

 NKPALIN - 0.43s

Go down 
2 posters
Tác giảThông điệp
liveislife
Đang tập code
Đang tập code



Tổng số bài gửi : 9
Points : 20
Danh tiếng : 2
Join date : 21/10/2011

NKPALIN - 0.43s Empty
Bài gửiTiêu đề: NKPALIN - 0.43s   NKPALIN - 0.43s I_icon_minitimeMon Oct 24, 2011 4:45 pm

ĐỀ BÀI:

Trích dẫn :


Một chuỗi được gọi là đối xứng (palindrome) nếu như khi đọc chuỗi này từ phải sang trái cũng thu được chuỗi ban đầu.

Yêu cầu: tìm một chuỗi con đối xứng dài nhất của một chuỗi s cho trước. Chuỗi con là chuỗi thu được khi xóa đi một số ký tự từ chuỗi ban đầu.
Dữ liệu vào

Gồm một dòng duy nhất chứa chuỗi s, chỉ gồm những chữ cái in thường.
Kết qủa

Gồm một dòng duy nhất là một xâu con đối xứng dài nhất của xâu s. Nếu có nhiều kết quả, chỉ cần in ra một kết quả bất kỳ.
Giới hạn

Chuỗi s có độ dài không vượt quá 2000.
Ví dụ

Dữ liệu mẫu
lmevxeyzl

Kết qủa
level


THUẬT TUÁN:

+ Tương tự bài QBSTR chuỗi 2 là chuỗi đảo của chuỗi 1, khác ở chỗ là ta có đánh dấu lại rồi đếm ngược lại những chỗ đã đánh dấu.

SOURCE CODE:

Code:

import java.util.Scanner;
class Test
{
    public static void main(String[] args)
    {
        Scanner nhap = new Scanner(System.in);
        String a = nhap.nextLine();
        String s = "";
        char c1[] = a.toCharArray();
        int cLen = c1.length + 1;
        char c2[] = new char[cLen-1];
        int[][] p = new int[400][400];
        int[][] q = new int[400][400];
        int u = 0;
        for( int i = cLen-1; i>=1; i-- ){
            p[i][0] = 0;
            p[0][i] = 0;
            c2[u] = c1[i-1];
            u++;
        }
        u = 0;
        for( int i = 1; i < cLen; i++ ) {
            for( int j = 1; j < cLen; j++ ) {
                if( c1[i-1] == c2[j-1] ) {
                    p[i][j] = p[i-1][j-1] + 1;
                    q[i][j] = 1;
                }else{
                    p[i][j] = Math.max( p[i-1][j], p[i][j-1] );
                }
            }
        }
        for( int i = 0; i < cLen; i++ ) {
            for( int j = 0; j < cLen; j++ ) {
                if( p[i][j] > u )
                u = p[i][j];
            }
        }
        for( int i = cLen-1; i>=1;i-- ) {
            for( int j = cLen - 1; j >= 1 ; j-- ) {
                if( p[i][j] == u && q[i][j] == 1 ){
                    s += c1[i-1];
                    u--;
                }
            }
        }
    System.out.print(s);
    }
}

Mà sao nó chạy có 0.34s nhỉ, cái kia chạy tới 4s?
Về Đầu Trang Go down
TrungHieu11
Admin
Admin
TrungHieu11


Tổng số bài gửi : 52
Points : 102
Danh tiếng : 6
Join date : 15/10/2011
Đến từ : Đại học Công Nghiệp Tp.HCM

NKPALIN - 0.43s Empty
Bài gửiTiêu đề: Re: NKPALIN - 0.43s   NKPALIN - 0.43s I_icon_minitimeMon Oct 24, 2011 10:44 pm

Rất tốt!! Sad Thời gian chạy đó là chạy hết tất cả các test, nếu bài đó nhiều test thì thời gian chạy hết các test sẽ lâu hơn các bài ít test
Về Đầu Trang Go down
https://olphui.forumvi.com
 
NKPALIN - 0.43s
Về Đầu Trang 
Trang 1 trong tổng số 1 trang

Permissions in this forum:Bạn không có quyền trả lời bài viết
Lập trình, thuật toán :: Problems :: VNOI - SPOJ-
Chuyển đến