完因素割回文串的算法题,难点重要在怎样去分割,靠什么去分割字符串
- 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的使用更清楚了

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |