完成分割回文串的算法题,难点主要在如何去分割,靠什么去分割字符串
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的使用更清晰了