完成分割回文串的算法题,难点主要在如何去分割,靠什么去分割字符串
int a(char arr[]){
int i,j;
int len=strlen(arr);
for(i=0,j=len-1;i<j;i++,j--){
if(arr[i]!=arr[j]) return 0;
}
return 1;
}
char **path;
int pathtop;
char***reasult;
int*ansize;
int count;
void copy(){
char**tempth=(char**)malloc(sizeof(char*)*pathtop);
int i;
for(i=0;i<pathtop;i++){
tempth[i]=path[i];
}
reasult[count]=tempth;
ansize[count++]=pathtop;
}
char*cutstring(char*str,int startindex,int endindex){
char*temp=(char*)malloc(sizeof(char)*(endindex-startindex+2));
int i;
int index=0;
for(i=startindex;i<=endindex;i++){
temp[index++]=str[i];
}
temp[index]='\0';
return temp;
}
void backtracking(char*s,int startindex,int size){
if(startindex>=size){
copy();
return;
}
for(int i=startindex;i<size;i++){
char*temp=cutstring(s,startindex,i);
if(a(temp)){
path[pathtop++]=temp;
}else {
continue;
}
backtracking(s,i+1,size);
pathtop--;
}
}
char*** partition(char* s, int* returnSize, int** returnColumnSizes){
int len=strlen(s);
char*** partition(char* s, int* returnSize, int** returnColumnSizes);
path=(char**)malloc(sizeof(char*)*len);
reasult=(char***)malloc(sizeof(char**)*40000);
ansize=(int*)malloc(sizeof(int)*40000);
pathtop=0;
count=0;
backtracking(s,0,len);
*returnSize=count;
*returnColumnSizes=(int*)malloc(sizeof(int)*(*returnSize));
for(int i=0;i<*returnSize;i++){
(*returnColumnSizes)[i]=ansize[i];
}
return reasult;
}
继续跟着写Java的拼图小游戏的项目,感觉对Java的使用更清晰了
