hihocoder #1094 : Lost in the City
2017-09-13 21:11
330 查看
思路:暴力枚举,a[3][3]可能存在4中情况,对a做旋转,依次与map进行匹配。
下面的代码存在问题,当a为对称矩阵时,正确答案会多次输出
#include<iostream>
#include<string>
using namespace std;
void rotate(char a[3][3])
{
char b[3][3];
int i,j;
for(i=0;i<3;++i)
{
for(j=0;j<3;++j)
{
b[i][j]=a[3-j-1][i];
}
}
for(i=0;i<3;++i)
{
for(j=0;j<3;++j)
{
a[i][j]=b[i][j];
}
}
}
int main()
{
int M,N,i,j,k;
char map[200][200],a[3][3];
freopen("input.txt","r",stdin);
cin>>N>>M;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
cin>>map[i][j];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
cin>>a[i][j];
for(i=1;i<N-1;i++)
{
for(j=1;j<M-1;j++)
{
if(map[i][j]==a[1][1])
{
for(k=0;k<4;k++)
{
if((a[0][0]==map[i-1][j-1])&&(a[0][1]==map[i-1][j])&&(a[0][2]==map[i-1][j+1])&&(a[1][0]==map[i][j-1])&&(a[1][2]==map[i][j+1])&&(a[2][0]==map[i+1][j-1])&&(a[2][1]==map[i+1][j])&&(a[2][2]==map[i+1][j+1]))
{
printf("%d %d\n",i+1,j+1);
}
rotate(a);
}
}
}
}
return 0;
}
修改后AC的代码如下:
#include<iostream>
#include<string>
using namespace std;
void rotate(char a[3][3])
{
char b[3][3];
int i,j;
for(i=0;i<3;++i)
{
for(j=0;j<3;++j)
{
b[i][j]=a[3-j-1][i];
}
}
for(i=0;i<3;++i)
{
for(j=0;j<3;++j)
{
a[i][j]=b[i][j];
}
}
}
int main()
{
int M,N,i,j,k,flag;
char map[200][200],a[3][3];
//freopen("input.txt","r",stdin);
cin>>N>>M;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
cin>>map[i][j];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
cin>>a[i][j];
for(i=1;i<N-1;i++)
{
for(j=1;j<M-1;j++)
{
if(map[i][j]==a[1][1])
{
flag=0;
for(k=0;k<4;k++)
{
if((a[0][0]==map[i-1][j-1])&&(a[0][1]==map[i-1][j])&&(a[0][2]==map[i-1][j+1])&&(a[1][0]==map[i][j-1])&&(a[1][2]==map[i][j+1])&&(a[2][0]==map[i+1][j-1])&&(a[2][1]==map[i+1][j])&&(a[2][2]==map[i+1][j+1]))
{
flag=1;
}
rotate(a);
}
if(flag==1)
printf("%d %d\n",i+1,j+1);
}
}
}
return 0;
}
总结:矩阵旋转程序是从网上找的,用指针操作应该更便捷,好久没用指针,不太熟悉,下去得好好看看
下面的代码存在问题,当a为对称矩阵时,正确答案会多次输出
#include<iostream>
#include<string>
using namespace std;
void rotate(char a[3][3])
{
char b[3][3];
int i,j;
for(i=0;i<3;++i)
{
for(j=0;j<3;++j)
{
b[i][j]=a[3-j-1][i];
}
}
for(i=0;i<3;++i)
{
for(j=0;j<3;++j)
{
a[i][j]=b[i][j];
}
}
}
int main()
{
int M,N,i,j,k;
char map[200][200],a[3][3];
freopen("input.txt","r",stdin);
cin>>N>>M;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
cin>>map[i][j];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
cin>>a[i][j];
for(i=1;i<N-1;i++)
{
for(j=1;j<M-1;j++)
{
if(map[i][j]==a[1][1])
{
for(k=0;k<4;k++)
{
if((a[0][0]==map[i-1][j-1])&&(a[0][1]==map[i-1][j])&&(a[0][2]==map[i-1][j+1])&&(a[1][0]==map[i][j-1])&&(a[1][2]==map[i][j+1])&&(a[2][0]==map[i+1][j-1])&&(a[2][1]==map[i+1][j])&&(a[2][2]==map[i+1][j+1]))
{
printf("%d %d\n",i+1,j+1);
}
rotate(a);
}
}
}
}
return 0;
}
修改后AC的代码如下:
#include<iostream>
#include<string>
using namespace std;
void rotate(char a[3][3])
{
char b[3][3];
int i,j;
for(i=0;i<3;++i)
{
for(j=0;j<3;++j)
{
b[i][j]=a[3-j-1][i];
}
}
for(i=0;i<3;++i)
{
for(j=0;j<3;++j)
{
a[i][j]=b[i][j];
}
}
}
int main()
{
int M,N,i,j,k,flag;
char map[200][200],a[3][3];
//freopen("input.txt","r",stdin);
cin>>N>>M;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
cin>>map[i][j];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
cin>>a[i][j];
for(i=1;i<N-1;i++)
{
for(j=1;j<M-1;j++)
{
if(map[i][j]==a[1][1])
{
flag=0;
for(k=0;k<4;k++)
{
if((a[0][0]==map[i-1][j-1])&&(a[0][1]==map[i-1][j])&&(a[0][2]==map[i-1][j+1])&&(a[1][0]==map[i][j-1])&&(a[1][2]==map[i][j+1])&&(a[2][0]==map[i+1][j-1])&&(a[2][1]==map[i+1][j])&&(a[2][2]==map[i+1][j+1]))
{
flag=1;
}
rotate(a);
}
if(flag==1)
printf("%d %d\n",i+1,j+1);
}
}
}
return 0;
}
总结:矩阵旋转程序是从网上找的,用指针操作应该更便捷,好久没用指针,不太熟悉,下去得好好看看
相关文章推荐
- hihoCoder #1094 : Lost in the City
- hihocoder #1094 : Lost in the City微软苏州校招笔试 12月27日 (建图不大【暴力枚举】 子图的4种形态 1Y )
- hihocoder #1094 : Lost in the City
- #1094 Lost in the City
- #1094 : Lost in the City
- #1094 : Lost in the City
- 【hihocoder】1094. lost in the City
- #1094 : Lost in the City
- [HIHO1094]Lost in the City(暴力、枚举)
- hihoCoder#1094 Lost in the City
- hihocoder 1094 : Lost in the City
- #1094 : Lost in the City(测试用例正确,但提交显示WA,求发现我程序错误)
- hihoCoder题库1094Lost in the City
- hihocoder#1094 Lost in the City
- HIHOCODER#1094 : Lost in the City
- #1094 : Lost in the City 找到几个当年c语言留下的坑
- #1094 : Lost in the City 找到几个当年c语言留下的坑
- 【hihocoder】#1094 : Lost in the City
- hihocoder-#1094 : Lost in the City
- hiho #1094 : Lost in the City