首页 > 其他分享 >131. 分割回文串c

131. 分割回文串c

时间:2024-03-09 14:46:07浏览次数:22  
标签:分割 20 returned returnSize int 131 array 回文

这题真的坑爹啊,不明白为什么会产生万大小的数据啊。

/**
 * Return an array of arrays of size *returnSize.
 * The sizes of the arrays are returned as *returnColumnSizes array.
 * Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().
 */

char c[20][20];
bool judge(char* s,int head,int tail){
    while(head<=tail){
        if(s[head]!=s[tail]) return false;
        head++;
        tail--;
    }
    return true;
}

void dfs(char* s,char*** array,int* returnSize,int* column,int index,int count,int n){
    if(index>n) return;
    if(index==n){
        column[*returnSize]=count;
        for(int i=0;i<count;i++) strcpy(array[*returnSize][i],c[i]);
        (*returnSize)++;
        return ;
    }
    for(int i=0;i<n;i++){
        int tail=index+i;
        if(tail<n){
            if(judge(s,index,tail)){
                for(int j=index;j<=tail;j++) c[count][j-index]=s[j];
                
                dfs(s,array,returnSize,column,tail+1,count+1,n);
                for(int j=index;j<=tail;j++) c[count][j-index]=0;
            }
        }
    }
}

char*** partition(char* s, int* returnSize, int** returnColumnSizes) {
    *returnSize=0;
    char*** array=(char***)malloc(sizeof(char**)*20000);
    for(int i=0;i<20000;i++) array[i]=(char**)malloc(sizeof(char*)*17);
    for (int i = 0; i < 20000; i++) {
        for (int j = 0; j < 17; j++) {
            array[i][j] = (char*)malloc(sizeof(char) * 17);
        }
    }
    for(int i=0;i<20;i++){
        for(int j=0;j<20;j++){
            c[i][j]=0;
        }
    }
    int* column=(int*)malloc(sizeof(int)*20000);
    dfs(s,array,returnSize,column,0,0,strlen(s));
    *returnColumnSizes=column;
    return array;
}

结果:

标签:分割,20,returned,returnSize,int,131,array,回文
From: https://www.cnblogs.com/llllmz/p/18062681

相关文章

  • 【力扣】复原IP地址(回溯法)(分割问题)
    问题描述在这个题中,因为结果的数据类型为vector<string>所以直接在s中添加分割点比较方便,先看一下代码:classSolution{private:vector<string>result;//记录结果//startIndex:搜索的起始位置,pointNum:添加逗点的数量voidbacktracking(string&s,intst......
  • python urllib.parse urlparse path url路径分割
    前言全局说明pythonurllib.parseurlparsepathurl路径分割一、获取路径部分#!/usr/bin/envpython3#coding:UTF-8#-*-coding:UTF-8-*-fromurllib.parseimporturlparseurl='http://www.baidu.com/aa/bb/cc/index.html'print("url:",url)parsed......
  • 初三奥赛模拟测试1--T1回文
    初三奥赛模拟测试1--\(T1\)回文HZOI题意给定一个\(n\timesm\)的,由字符组成的矩阵\(A\),问你由\((1,1)\)开始,点\((i,j)\)只可以往\((i+1,j)\)和\((i,j+1)\)走,走到\((n,m)\)停。记录路径,问由路径上的字符构成的字符串能是回文串......
  • 分类器——高斯混合模型/Gaussian-Mixture-Models(GMM)之图像分割
    图像分割之高斯混合模型使用GMM的步骤如下:首先,GMM由create_class_gmm创建。然后,通过add_sample_class_gmm添加训练向量,然后可以使用write_samples_class_gmm将它们写入磁盘。通过train_class_gmm确定分类器中心参数(如上定义)。此外,它们可以与write_class_gmm一起保存,以便以后......
  • CF1312C Adding Powers 题解
    题意:对于一个初始全\(0\)的序列,问是否能够进行若干次操作(第\(i\)次操作为对序列中任意一个元素增加\(k^i\)),使得此序列变为目标数组\(a\)。首先,我们令需要进行操作的序列为\(b\)。我们知道,如果能通过若干次操作将\(b\)变为\(a\),则有以下三种情形:\(a\)中的元素全......
  • 序列分割
    我们像往常一样考虑如何分组,但是我们发现在计算答案的过程中,当分的组确定的话,答案跟切的顺序是否有关如果有关的话,那么这个DP将变得非常难,所以我们估计是无关的,但是一下子就证明一般性不太好证,所以我们先手搓几组\(k\)比较小的情况当\(k=2\)的时候,假设最后分的组的每一组的元素......
  • 基于四叉树的图像分割算法matlab仿真
    1.算法运行效果图预览   2.算法运行软件版本matlab2022a 3.算法理论概述        图像分割是计算机视觉和图像处理中的一项关键技术,旨在将图像划分为多个具有相似性质的区域。基于四叉树的图像分割算法是一种有效的分割方法,它通过递归地将图像划分为四个子......
  • CVPR 2024 满分论文!Meta提出EfficientSAM:快速分割一切!
    前言 Meta研究者提出了一种改进思路,利用SAM的掩码图像预训练(SAMI)。这是通过利用MAE预训练方法和SAM模型实现的,以获得高质量的预训练ViT编码器。这一方法降低了SAM的复杂性,同时能够保持良好的性能。本文转载自机器之心仅用于学术分享,若侵权请联系删除欢迎关注公......
  • 小红的回文数
    引言题目连接:https://ac.nowcoder.com/acm/contest/75174/E思路随意选取一段区间,对其长度进行分类讨论:若其长度为偶数,则0~9这十个数字在该区间内出现的次数为偶数时,可以将该区间重构成回文。若其长度为奇数,则满足0~9这十个数有一个出现次数是奇数,其余数为偶数则......
  • 9.回文数
    完成度:完成但是较为复杂问题:自己写的时候写了一堆思路还要折中算法啥的,但是看了答案发现果然还得是大佬写出来更方便的,直接用另一个变量赋值后面再和x比较。这道题看答案如果是自己写的话想不到while(x>revert){revert=revert*10+x%10;x=x/10;}returnxrevert||xrevert/10;......