Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

new message for problem 3821

Posted by 767676 at 2026-05-17 19:04:55 on Problem 3821
code:
#include <stdio.h>
#include <string.h>

char s[155];
int dp[155][155];
int len;

int dfs(int l, int r) {
    if (l > r) return 1;
    if (l == r) return 0;
    if (dp[l][r] != -1) return dp[l][r];

    if (s[l] == s[r] && dfs(l + 1, r - 1)) {
        return dp[l][r] = 1;
    }

    for (int k = l; k < r; k++) {
        if (dfs(l, k) && dfs(k + 1, r)) {
            return dp[l][r] = 1;
        }
    }

    for (int k = l + 1; k <= r; k++) {
        if (s[l] == s[k] && dfs(l + 1, k - 1) && dfs(k, r)) {
            return dp[l][r] = 1;
        }
    }

    return dp[l][r] = 0;
}

int main() {
    while (gets(s)) {
        len = strlen(s);
        memset(dp, -1, sizeof(dp));
        if (dfs(0, len - 1)) {
            puts("solvable");
        } else {
            puts("unsolvable");
        }
    }
    return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator