OUVa 232 Crossword answer

来源:互联网 发布:大数据意义包括哪些 编辑:程序博客网 时间:2024/05/22 02:05

求一个网格中的横纵字符串



</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 TESTFILE *fp;freopen_s(&fp, "data.in.txt", "r", stdin);freopen_s(&fp, "data.out.txt", "w", stdout);#endifint 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 elemcout << setw(3) << eArr[i][j].num << ".";elsebreak;while (j < col && eArr[i][j].cval != '*')cout << eArr[i][j++].cval;cout << endl;}//endfor}//endforcout << "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 oneif (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;}





0 0