OUVa 232 Crossword answer
2016-05-25 11:27
260 查看
求一个网格中的横纵字符串
</pre><pre name="code" class="cpp">
#include "stdafx.h" #include<iostream> #include<string> #include<iomanip> using namespace std; typedef struct { char cval; int num; } Elem; int main() { #ifndef TEST FILE *fp; freopen_s(&fp, "data.in.txt", "r", stdin); freopen_s(&fp, "data.out.txt", "w", stdout); #endif int cnt = 0; int row = 0, col = 0; /*initialize the struct array*/ const int conRow = 100; const int conCol = 100; Elem **eArr = new Elem*[conRow]; for (int i = 0; i < conRow; ++i) eArr[i] = new Elem[conCol]; while (cin >> row && row != 0) { cin >> col; string line; int index = 0; for (int i = 0; i < row; ++i) { cin >> line; for (int j = 0; j < col; ++j) { eArr[i][j].cval = line[j]; if (line[j] != '*') if (i == 0 || j == 0 || eArr[i - 1][j].cval == '*' || eArr[i][j - 1].cval == '*') eArr[i][j].num = ++index; } }//endfor /*output across*/ cnt++; if (cnt > 1) cout << endl; cout << "puzzle #" << cnt << ":" << endl; cout << "Across" << endl; for (int i = 0; i < row; ++i) { for (int j = 0;;) { while (j < col && eArr[i][j].cval == '*') j++; if (j < col)//first elem cout << setw(3) << eArr[i][j].num << "."; else break; while (j < col && eArr[i][j].cval != '*') cout << eArr[i][j++].cval; cout << endl; }//endfor }//endfor cout << "Down" << endl; int *pos = new int[col](); for (int j = 0; j < col; ++j) while (pos[j] < row && eArr[pos[j]][j].cval == '*') pos[j]++; while (true) { int i = 0; for (int j = 1; j < col; ++j)// lest one if (pos[j] < pos[i]) i = j; if (pos[i] == row) break; cout << setw(3) << eArr[pos[i]][i].num << "."; while (pos[i] < row && eArr[pos[i]][i].cval != '*') cout << eArr[pos[i]++][i].cval; cout << endl; while (pos[i] < row && eArr[pos[i]][i].cval == '*') pos[i]++; }//endwhile } return 0; }
相关文章推荐
- Realm 使用教程
- 利用Code128字体将文本转换为code128条形码
- 3019
- 2.1
- 检查Linux服务器性能
- 编程风格之——版权申明
- syslog-ng详细安装配置
- C++字面值常量
- Ubuntu下安装Qt全部过程
- eclipse连接sqlserver2014问题
- 合并两个有序链表
- Linux免密码登录
- Linux内核学习笔记2
- Scrum 项目7.0——第一个Sprint的演示和回顾
- 重量传感器
- 十天冲刺开发第七天个人工作总结
- U盘数据丢失后怎样恢复
- android graphic(22)—android M 分屏功能开关
- Java多线程学习
- Try running `watchman version` from your terminal解决