解题思路:
注意事项:
参考代码:
#include<stdio.h>
#include<string.h>
int sum=0;
char book[8];
char s[1000];
char mem[1000][9];
int m=0;
int f(char *str)
{
int i;
for( i=0;i<m;i++)
{
if(strcmp(str,mem[i])==0)
return 0;
}
return 1;
}
void dfs(int step,char* str)
{
if(step==8&&f(str))
{
char a[8];
for(int i=0;i<=strlen(s)-8;i++)
{
int k=0;
for(int j=i;j<8+i;j++)
{
a[k]=s[j];
k++;
}
if(strcmp(a,str)==0)
{
for(int d=0;d<8;d++)
mem[m][d]=str[d];
m++;
sum++;
}
}
return;
}
for(int i=0;i<8;i++)
{
if(book[i]!='*')
{
char demo = book[i];
str[step] = book[i];
book[i]='*';
dfs(step+1,str);
book[i] = demo;
}
}
return;
}
int main()
{
char key[100][1000];
gets(s);
int N;
scanf("%d",&N);
getchar();
for(int i=0;i<N;i++)
{
gets(key[i]);
}
for(int i=0;i<N;i++)
{
for(int j=0;j<8;j++)
{
book[j]=key[i][j];
}
dfs(0,key[i]);
}
printf("%d",sum);
}
0.0分
1 人评分
【数组的距离】 (C语言代码)浏览:787 |
简单的a+b (C语言代码)浏览:565 |
A+B for Input-Output Practice (IV) (C语言代码)浏览:484 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:600 |
1128题解(返回值为数组的情况)浏览:571 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:438 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:569 |
1071题解浏览:585 |
The 3n + 1 problem (C语言代码)浏览:550 |
C语言训练-字符串正反连接 (C语言代码)浏览:653 |