#1094 : Lost in the City 找到几个当年c语言留下的坑
2016-06-08 00:00
477 查看
思路很简单
对于Hi对象的3x3格子,我们需要存储9个位置。我们将九宫格中的中心2x2位置的单独拿出来做判断,若2x2位置的符合,再去匹配其他8个位置。
由于Hi对象可以旋转,因此,对于这8个位置需要用一个一维数组存储八个位置。
在进行遍历操作的时候,需要判断m数组的值是否满足地图数组a的值,并且将a中值旋转的四种状态都要做判断。
当然,做函数式处理,也是很重要的。
//解决的c语言坑见评论
代码如下:
//指针问题
int _tmain(int argc, _TCHAR* argv[])
{
int a = 1;
int *b = &a;
//b = &a;
a++;
printf("%d\n",*b);
printf("%d\n",a);
return 0;
}
输出:2
2
对于Hi对象的3x3格子,我们需要存储9个位置。我们将九宫格中的中心2x2位置的单独拿出来做判断,若2x2位置的符合,再去匹配其他8个位置。
由于Hi对象可以旋转,因此,对于这8个位置需要用一个一维数组存储八个位置。
在进行遍历操作的时候,需要判断m数组的值是否满足地图数组a的值,并且将a中值旋转的四种状态都要做判断。
当然,做函数式处理,也是很重要的。
//解决的c语言坑见评论
代码如下:
void BuildHi(char** Lhi, char* m1){ m1[0] = Lhi[0][0]; m1[1] = Lhi[0][1]; m1[2] = Lhi[0][2]; m1[3] = Lhi[1][2]; m1[4] = Lhi[2][2]; m1[5] = Lhi[2][1]; m1[6] = Lhi[2][0]; m1[7] = Lhi[1][0]; } bool FixedPosition(int i,int j,char**a,char* m1){ if (a[i - 1][j - 1] == m1[0] && a[i-1][j] == m1[1] && a[i-1][j+1] == m1[2] && a[i][j+1] == m1[3] &&a[i+1][j+1] == m1[4] &&a[i+1][j] == m1[5] && a[i+1][j-1] ==m1[6] && a[i][j-1] == m1[7]){ return true; } if (a[i - 1][j - 1] == m1[6] && a[i - 1][j] == m1[7] && a[i - 1][j + 1] == m1[0] && a[i][j + 1] == m1[1] && a[i + 1][j + 1] == m1[2] && a[i + 1][j] == m1[3] && a[i + 1][j - 1] == m1[4] && a[i][j - 1] == m1[5]){ return true; } if (a[i - 1][j - 1] == m1[4] && a[i - 1][j] == m1[5] && a[i - 1][j + 1] == m1[6] && a[i][j + 1] == m1[7] && a[i + 1][j + 1] == m1[0] && a[i + 1][j] == m1[1] && a[i + 1][j - 1] == m1[2] && a[i][j - 1] == m1[3]){ return true; } if (a[i - 1][j - 1] == m1[2] && a[i - 1][j] == m1[3] && a[i - 1][j + 1] == m1[4] && a[i][j + 1] == m1[5] && a[i + 1][j + 1] == m1[6] && a[i + 1][j] == m1[7] && a[i + 1][j - 1] == m1[0] && a[i][j - 1] == m1[1]){ return true; } return false; } void LittleHi(){ int m, n; int hi = 3; // char Lhi[3][3];//所在位置矩阵 char m1[8]; //记录两个旋转矩阵 scanf("%d%d", &m, &n); char **Lhi = (char**)malloc(sizeof(char*) * 3); for (int i = 0; i < 3; ++i){//为每行分配4个大小空间 Lhi[i] = (char*)malloc(sizeof(char) * 3); } //a is map char **a = (char**)malloc(sizeof(char*) * m);//为二维数组分配m行 for (int i = 0; i < m; ++i){//为每行分配4个大小空间 a[i] = (char*)malloc(sizeof(char) * n); } for (int i = 0; i < m; i++) { scanf("%s",&a[i][0]); //a[i][j]=getchar(); } fflush(stdin); //Lhi自身有四种状态 for (int i = 0; i < hi; i++) { scanf("%s", &Lhi[i][0]); //Lhi[i][j] = getchar(); } BuildHi(Lhi, m1); //遍历匹配 m行 n列 for (int i = 1; i < m-1; i++) { for (int j = 1; j < n-1; j++) { //表示中间单元格相等 if (a[i][j] == Lhi[1][1]){ if (FixedPosition(i, j, a, m1)){ cout << i+1 << " " << j+1 << endl; } } } } } int _tmain(int argc, _TCHAR* argv[]) { LittleHi(); return 0; }
//指针问题
int _tmain(int argc, _TCHAR* argv[])
{
int a = 1;
int *b = &a;
//b = &a;
a++;
printf("%d\n",*b);
printf("%d\n",a);
return 0;
}
输出:2
2
相关文章推荐
- 函数指针的正确理解 from C++ Primer Plus P242
- Michael &Scott 无锁队列 C++ 实现
- C++中的虚函数详解
- NDK工具使用,JNI开发
- C++实现多线程全局内存池
- Leetcode_c++:Construct Binary Tree from Preorder and Inorder Traversal(105)
- c++实验7--最大公约数和最小公倍数
- Leetcode_c++: Subsets II (090)
- c++/c 产生随机数
- Leetcode_c++: Merge Sorted Array (088)
- c语言实例之函数求参顺序
- 差分约束系统详解 BZOJ 2330 糖果
- C++ error:LNK2005 已经在*.obj中定义
- Leetcode_c++: Maximal Rectangle (085)
- c++:工资类
- Rectangle Area
- 那些年C语言老师没有教给你的东西(一)
- 第15周阅读程序(2)
- 第15周阅读程序(1)
- Leetcode_c++: Largest Rectangle in Histogram (084)