| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 679 人关注过本帖
标题:麻烦点,NB的人不要错过哟!!
取消只看楼主 加入收藏
20072815
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2007-12-1
收藏
 问题点数:0 回复次数:0 
麻烦点,NB的人不要错过哟!!
有一个m行*n列的方格,m和n都不大于50,在里面找到完全连着的需要的单词,横、竖、斜、朝各个方向都可以,第一行输入一个数字表明有几组方格,然后空一行输入m和n,在输入一组方格,接下来输入k表示有几个要找的单词,每行输入一个要找的单词。
输出就是找到的单词首字母的横纵坐标了,空格隔开,如果找到大于一个输出最上面最左边的。
第一个数字1是表示有多少个测试,后面的8  11表示下面是一个8行11列的字符数组(无任何的顺序,且不考虑大小写之差)。后面的4表示有四个单词需要在上面的矩阵中找出(顺序要相同,当然可以是横着的,竖着的,或是邪着的,倒着的)。

例如:输入

abcDEFGhigg
hEbkWalDork
FtyAwaldORm
FtsimrLqsrc
byoArBeDeyv
Klcbqwikomk
strEBGadhrb
yUiqlxcnBjf
4
Waldorf
Bambi
Betty
Dagbert
输出:
2 5
2 3
1 2
7 8

我的程序:
#include<stdio.h>
#include<string.h>
int main()
{int i,j,k,m,M,n,t,l;static int c[50]={0};char a[50][50],b[50][50];
  scanf("%d",&t);
for(k=0;k<t;k++)
  {scanf("%d %d",&m,&n);
    for(i=0;i<m;i++)
     for(j=0;j<n+1;j++)
      scanf("%c",a[i][j]);
       scanf("%d",&M);

   for(i=0;i<M;i++)
     scanf("%s",&b[i]);

   for(i=0;i<M;i++)
     c[i]=strlen(b[i]);

    for(i=0;i<m;i++)
     for(j=1;j<n+1;j++)
       if(a[i][j]>='A'&&a[i][j]<='Z')
         a[i][j]=a[i][j]+32;

 for(i=0;i<M;i++)
   for(j=0;j<c[i];j++)
    if(b[i][j]>='A'&&b[i][j]<='Z')
       b[i][j]=b[i][j]+32;

   for(l=0;l<M;l++)
    {
      for(i=0;i<m;i++)
      for(j=1;j<n+1;j++)
     if(a[i][j]==b[l][0])
           { if(c[l]<=n+1-j&&a[i][j+c[l]-1]==b[l][c[l]-1])printf("%d %d\n",i+1,j);
             if(c[l]<=j&&a[i][j-c[l]+1]==b[l][c[l]-1])printf("%d %d\n",i+1,j);
             if(c[l]<=i+1&&a[i-c[l]+1][j]==b[l][c[l]-1])printf("%d %d\n",i+1,j);
             if(c[l]<=m-i&&a[i+c[l]-1][j]==b[l][c[l]-1])printf("%d %d\n",i+1,j);
             if(c[l]<=i+1&&c[l]<=j&&a[i-c[l]+1][j-c[l]+1]==b[l][c[l]-1])printf("%d %d\n",i+1,j);
             if(c[l]<=n-j+1&&c[l]<=i+1&&a[i-c[l]+1][j+c[l]-1]==b[l][c[l]-1])printf("%d %d\n",i+1,j);
             if(c[l]<=m-i&&c[l]<=j&&a[i+c[l]-1][j-c[l]+1]==b[l][c[l]-1])printf("%d %d\n",i+1,j);
             if(c[l]<=m-i&&c[l]<=n-j+1&&a[i+c[l]-1][j+c[l]-1]==b[l][c[l]-1])printf("%d %d\n",i+1,j);
            }
     }
if(k==n-1)break;
else printf("\n");
  }
return 0;

}
出现了无效内存引用,不会改了
搜索更多相关主题的帖子: 单词 方格 麻烦 数字 顺序 
2008-03-09 11:14
快速回复:麻烦点,NB的人不要错过哟!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016202 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved