文件名查找
Time Limit:1000MS  Memory Limit:32768K

 

Description:

在目录里用搜索查找文件是很方便的但是这究竟是怎样一个过程呢?

Input:

第一行为2个整数n,m(0<n,m<=10) 接着有n行字串每行包含数据Ni,表示文件名(无空格) 后面是m行查询每行包含数据Si,表示要查询的文件名前缀

Output:

对于每个查询,输出以Si为前缀的文件总数

Sample Input:

6 5
SearchIndexer.exe
npmproxy.dll
schtasks.exe
KBDSORST.DLL
DRWATSON.EXE
wdi.dll
WavD
KB
Com
DRWAT
odbc

Sample Output:

0
1
0
1
0

#include <iostream>
using namespace std;
char c1[500][500];
char c2[500];
int n,m;
int find(char c2[])
{
 int i,j,c=0;
   for(i=0;i<n;i++)
    {
  for(j=0;j<strlen(c2);j++)
  {
     if(c2[j]!=c1[i][j]) break; 
  } 
  if(j==strlen(c2))
  {
   c++;
   break;
  
  }
 
 }
 return c; 
}
int main()
{
 int i;
 cin>>n>>m;
 for(i=0;i<n;i++)
 cin>>c1[i];
 
 for(i=0;i<m;i++)
 {
  cin>>c2;
  cout<<find(c2)<<endl;
 }
    system("pause");
    return 0;
}
记:一开始将i,j全定义为全局变量了,发现只得到一组输出结果,调试发现,调用find()函数返回时,i已经等于6了,所以直接退出最下面的for循环,第二组测试数据就输不进去了,将全局变量改成局部的即可!

考试时一直想用查找子串的方法,一开始不知道s.substr()这个函数,后面时间快到的时候测试时也有类似问题,输出莫名其妙,以后要注意,

#include <iostream>
using namespace std;
char c1[500][500];
char c2[500];
int n,m;
bool find(char c2[])
{
 int i,j,flag=false;
   for(i=0;i<n;i++)
    {
  for(j=0;j<strlen(c2);j++)
  {
     if(c2[j]!=c1[i][j]) break; 
  } 
  if(j==strlen(c2))
  {
   flag=true;
   break;
   //当找到,即可退出,可加快速度 ,但这样只能查找到一个,如果要统计出现的次数,用上面的那种
  
  }
 
 }
 return flag; 
}
int main()
{
 int i;
 cin>>n>>m;
 for(i=0;i<n;i++)
 cin>>c1[i];
 
 for(i=0;i<m;i++)
 {
  cin>>c2;
  bool tmp=find(c2);
  if(tmp)
  cout<<1<<endl;
  else
  cout<<0<<endl;
 }
    system("pause");
    return 0;
}

/////////////////////////////////////////////////////朋友做的

#include<iostream>
using namespace std;
char a[100][60];
int main()
{
  char b[50];
  int m,n;
  cin>>m>>n;
  getchar();
  for(int i=0;i<m;i++)
    gets(a[i]);
//  cout<<"完了"<<endl;
  for(int i=0;i<n;i++)
  {
     gets(b);
     int k=0;
     for(k=0;k<m;k++)
     {
      int j=0;
      for(j=0;b[j];j++)
       if(b[j]!=a[k][j]) break;
      if(!b[j])//读到了b[j]的最后一个\0
   {cout<<'1'<<endl;break;}
     }
     if(k==m) cout<<'0'<<endl;  
  }
  system("pause");   
}

posted on 2010-04-17 21:26  蓝牙  阅读(345)  评论(0编辑  收藏  举报