**in:2357(输入3的原因是,因子需要3,如输入257则The number of solutions = 0)
**out:(如图所示)

#include<cstdio>
#include<cstring>
int main()
{
int count = 0;
char arr[20],brr[100];//brr用来存abc,de,还有以下定义的x,y,z,用sprintf
scanf("%s",arr);
for(int abc = 111; abc < 999; abc++)
{
for(int de = 11; de < 99; de++)
{
int x = abc*(de%10);
int y = abc*(de/10);
int z = abc*de;
sprintf(brr,"%d%d%d%d%d",abc,de,x,y,z);//像printf用来输出到屏幕一样,sprintf用来输出到字符串
int flag = 1;
for(int i=0;i<strlen(brr);i++)
{
if(strchr(arr,brr[i])==NULL)
{
flag = 0;
}
}
if(flag)
{
//此处是为了方便读者阅读,其实以下printf可以合并成一个,更简约!!
printf("<%d>\n",++count);
printf("%5d\n",abc);
printf("X%4d\n",de);
printf("-----\n");
printf("%5d\n",x);
printf("%4d\n",y);
printf("-----\n");
printf("%5d\n",z);
printf("\n");
}
}
}
printf("The number of solutions = %d\n",count);
return 0;
}
最后,注意:
①arr[strlen(arr)]是结束标记"\0";
②strlen(arr)返回的就是结束标记之前的字符个数。
本文介绍了一个使用C++实现的字符串匹配算法,该算法通过遍历特定格式的字符串来查找匹配项。具体而言,程序接收一个由数字组成的字符串作为输入,并尝试找出所有符合预设格式的数字组合。
920





