首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

怎么把下面的c++代码改成c的代码!本人是初学

2012-03-16 
如何把下面的c++代码改成c的代码!本人是初学#includeiostream#includestringusingnamespacestd//----

如何把下面的c++代码改成c的代码!本人是初学
#include       <iostream>      
    #include       <string>      
    using       namespace       std;      
    //---------------------------------------------      
       
    int       letter[26];      
       
    //---------------------------------------------      
       
    void       DFS(int       pos,       int       depth,       string       str)      
    {      
                    if       (depth       ==       0)       {      
                                    cout       < <       str       < <       endl;      
                                    return;      
                    }      
                    for       (int       i       =       pos;       i       <       26;       ++i)       {      
                                    if       (letter[i]       >       0)       {      
                                                    --letter[i];      
                                                    DFS(i,       depth-1,       str+char(i+ 'a ')       );      
                                                    ++letter[i];      
                                    }      
                    }      
    }      
       
       
    int       main()      
    {      
                    memset(letter,       0,       sizeof(letter)       );      
       


                    char       *words       =       "acccccf ";      
                    for       (int       i       =       0;       i       <       strlen(words);       ++i)      
                                    ++letter[       words[i]- 'a '       ];      
       
                    for       (int       depth       =       1;       depth       <=       strlen(words);       ++depth)      
                                    DFS(0,       depth,       " ");      
       
                    return       0;      
    }


[解决办法]
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int letter[26];
//void DFS(int pos, int depth, string str)
void DFS(int pos, int depth, char* str)
{
int i ;
char* newstr;
char temp[2]={0};
if (depth == 0) {
//cout < < str < < endl;
printf( "%s\n ",str);
return;
}
for ( i= pos; i < 26; ++i) {
if (letter[i] > 0) {
--letter[i];
newstr=(char*)malloc(strlen(str)+2);
strcpy(newstr,str);
temp[0]=i+ 'a ';
strcat(newstr,temp);
//DFS(i, depth-1, str+char(i+ 'a ') );
DFS(i, depth-1, newstr );
free(newstr);
++letter[i];
}
}
}

int main()
{
char *words;
int i ,depth;
memset(letter, 0, sizeof(letter) );

words = "acccccf ";
for ( i = 0; i < (int)strlen(words); ++i)
++letter[ words[i]- 'a ' ];

for ( depth = 1; depth <= (int)strlen(words); ++depth)
DFS(0, depth, " ");

return 0;
}

热点排行