函数返回值
本帖最后由 一世轻尘 于 2021-3-7 14:00 编辑int ispalindromic(char* s,int i,int j,int** f)//用二维数组存储对应字符串是否为回文串
{
if(f)
return f;
if(i>=j)
return f=1;
return f=(s==s?ispalindromic(s,i+1,j-1,f):-1);
}
问一下这个return f=1;的作用是啥,是让整个函数的返回值为1,还是仅仅将1赋值给f,还是其它的作用 把完整的代码贴出来,可以直接运行调试的那种
人造人 发表于 2021-3-7 09:55
把完整的代码贴出来,可以直接运行调试的那种
没有主函数,正在研究这个解法,还没看懂,我感觉完整代码跟问题没啥关系
给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。
示例:
输入: "aab"
输出:
[
["aa","b"],
["a","a","b"]
]
人造人 发表于 2021-3-7 09:55
把完整的代码贴出来,可以直接运行调试的那种
// 记忆化搜索中,f = 0 表示未搜索,1 表示是回文串,-1 表示不是回文串
int isPalindrome(char* s, int** f, int i, int j) {
if (f) {
return f;
}
if (i >= j) {
return f = 1;
}
return f = (s == s ? isPalindrome(s, f, i + 1, j - 1) : -1);
}
void dfs(char* s, int n, int i, int** f, char*** ret, int* retSize, int* retColSize, char** ans, int* ansSize) {
if (i == n) {
char** tmp = malloc(sizeof(char*) * (*ansSize));
for (int j = 0; j < (*ansSize); j++) {
int ansColSize = strlen(ans);
tmp = malloc(sizeof(char) * (ansColSize + 1));
strcpy(tmp, ans);
}
ret[*retSize] = tmp;
retColSize[(*retSize)++] = *ansSize;
return;
}
for (int j = i; j < n; ++j) {
if (isPalindrome(s, f, i, j) == 1) {
char* sub = malloc(sizeof(char) * (j - i + 2));
for (int k = i; k <= j; k++) {
sub = s;
}
sub = '\0';
ans[(*ansSize)++] = sub;
dfs(s, n, j + 1, f, ret, retSize, retColSize, ans, ansSize);
--(*ansSize);
}
}
}
char*** partition(char* s, int* returnSize, int** returnColumnSizes) {
int n = strlen(s);
int retMaxLen = n * (1 << n);
char*** ret = malloc(sizeof(char**) * retMaxLen);
*returnSize = 0;
*returnColumnSizes = malloc(sizeof(int) * retMaxLen);
int* f;
for (int i = 0; i < n; i++) {
f = malloc(sizeof(int) * n);
for (int j = 0; j < n; j++) {
f = 1;
}
}
for (int i = n - 1; i >= 0; --i) {
for (int j = i + 1; j < n; ++j) {
f = (s == s) && f;
}
}
char* ans;
int ansSize = 0;
dfs(s, n, 0, f, ret, returnSize, *returnColumnSizes, ans, &ansSize);
return ret;
} 一世轻尘 发表于 2021-3-7 10:20
你给我一个这不能运行调试的代码,我也没办法,告诉我代码的出处也行
页:
[1]