求助把以下皇后守卫的C++程序改写成Pascal程序!!快!! 5

#include<iostream>usingnamespacestd;#defineMaxN10constintDir[8][2]={{1,0},{0,1},{-1,0... #include <iostream>

using namespace std;

#define MaxN 10
const int Dir[8][2] = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}, {1, 1}, {1, -1}, {-1, 1}, {-1, -1}};

int N, M, Ans;
char Map[MaxN][MaxN];
int CX[MaxN], CY[MaxN], CLS[MaxN + MaxN], CRS[MaxN + MaxN];

void Search(int X, int Y, int Sum)
{
if (Sum >= Ans) return;
if (X == N)
{
Ans = Sum;
return;
}
if (Y == M)
{
Search(X + 1, 0, Sum);
return;
}
if (Map[X][Y] == 'X' && !CX[X] && !CY[Y] && !CLS[X + Y] && !CRS[X - Y + M])
{
++ CX[X], ++ CY[Y], ++ CLS[X + Y], ++ CRS[X - Y + M];
Search(X + 1, 0, Sum + 1);
-- CX[X], -- CY[Y], -- CLS[X + Y], -- CRS[X - Y + M];
for (int i = 0; i < 8; ++ i)
for (int Nx = X + Dir[i][0], Ny = Y + Dir[i][1]; 0 <= Nx && Nx < N && 0 <= Ny && Ny < M; Nx += Dir[i][0], Ny += Dir[i][1])
{
++ CX[Nx], ++ CY[Ny], ++ CLS[Nx + Ny], ++ CRS[Nx - Ny + M];
Search(X, Y + 1, Sum + 1);
-- CX[Nx], -- CY[Ny], -- CLS[Nx + Ny], -- CRS[Nx - Ny + M];
}
}
else Search(X, Y + 1, Sum);
}

int main()
{
#ifndef ONLINE_JUDGE
freopen("queen.in", "r", stdin);
freopen("queen.out", "w", stdout);
#endif
for (int Cases = 1; ; ++ Cases)
{
scanf("%d", &N);
if (!N) return 0;
scanf("%d\n", &M);
for (int i = 0; i < N; ++ i)
gets(Map[i]);
Ans = 5;
Search(0, 0, 0);
printf("Case %d: %d\n", Cases, Ans);
}
}
展开
 我来答
明明无为山9311
2012-02-02 · TA获得超过10.1万个赞
知道大有可为答主
回答量:3.8万
采纳率:0%
帮助的人:4965万
展开全部
program
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式