大众信息网

测试这个c++程序最后的main函数的大括号有问题,帮忙看下啊。

答案:3  mip版
解决时间 2021-01-08 12:38
  • 提问者网友:安分守己的小青春
  • 2021-01-08 04:10
#include<stdio.h>
#define MAX 101
#define maxTrip 10000
struct step
{
int x,y;
char direct;
}chase[maxTrip];
int field[MAX][MAX];
int row[MAX][MAX],column[MAX][MAX];
int m,n;
int ans;
int trip;
int found;
int max(int x,int y)
{
return (x>y)?x:y;
}
int min(int x,int y)
{
return (x<y)?x:y;
}
void initialize()
{
int i,j;
scanf("%d,%d",&m,&n);
for(i=1;i<=m;++i)
for(j=1;j<=n;++j)
scanf("%d",&field[i][j]);
for(i=1;i<=m;++i)
for(j=1;j<=n;++j)
row[i][j]=row[i][j-1]+field[i][j];
for(i=1;i<=n;++i)
for(j=1;j<=m;++j)
column[j][i]=column[j-1][i]+field[j][i];
trip=0;
int from,to;
while(scanf("%d,%d,&from,&to") && (from || to))
{
chase[trip].x=from;
chase[trip].y=to;
scanf(" %c",&chase[trip].direct);
++trip;
}
}
void search(int step,int x,int y)
{
int i;
if (found) return;
if (step==trip){
++ans;
found=1;
return;
}
for(i=chase[step].x;i<=chase[step].y;++i){
int x0=x,y0=y;
switch (chase[step].direct){
case 'R':y0+=i;break;
case 'L':y0-=i;break;
case 'U':x0-=i;break;
case 'D':x0+=i;break;
}
if(x0>=1 && x0<=m && y0>=1 && y0<=n)
switch(chase[step].direct){
case'R':
case'L':
if (row[x0][max(y,y0)]==row[x0][min(y,y0)-1])
search(step+1,x0,y0);
break;
case 'U':
case 'D':
if (column[max(x,x0)][y0]==column[min(x,x0)-1][y0])
search(step+1,x0,y0);
break;
}
}
int main(void){
int i,j;
for (i=1;i<=m;++i)
row[i][0]=0;
for(i=1;i<=n;++i)
column[0][i]=0;
int iCase;
scanf("%d",&iCase);
while (iCase--){
initialize();
ans=0;
for(i=1;i<=m;++i)
for(j=1;j<=n;++j)
if (!field[i][j])
{
found=0;
search(0,i,j);
}
printf("%d\n",ans);
}
return 0;
}
最佳答案
  • 二级知识专家网友:单剑走天涯
  • 2021-01-08 05:32
swich缺少个结尾 },程序最后结尾多了一个} 望采纳,谢谢
switch(chase[step].direct){
case'R':
case'L':
if (row[x0][max(y,y0)]==row[x0][min(y,y0)-1])
search(step+1,x0,y0);
break;
case 'U':
case 'D':
if (column[max(x,x0)][y0]==column[min(x,x0)-1][y0])
search(step+1,x0,y0);
break;
全部回答
  • 1楼网友:神經兮兮
  • 2021-01-08 07:32
main函数前面少个},是上一个函数search少的 再看看别人怎么说的。
  • 2楼网友:对你在意
  • 2021-01-08 06:35
void search(int step,int x,int y) //最后掉了一个 } #include<stdio.h> #define MAX 101 #define maxTrip 10000 struct step { int x,y; char direct; }chase[maxTrip]; int field[MAX][MAX]; int row[MAX][MAX],column[MAX][MAX]; int m,n; int ans; int trip; int found; int max(int x,int y) { return (x>y)?x:y; } int min(int x,int y) { return (x<y)?x:y; } void initialize() { int i,j; scanf("%d,%d",&m,&n); for(i=1;i<=m;++i) for(j=1;j<=n;++j) scanf("%d",&field[i][j]); for(i=1;i<=m;++i) for(j=1;j<=n;++j) row[i][j]=row[i][j-1]+field[i][j]; for(i=1;i<=n;++i) for(j=1;j<=m;++j) column[j][i]=column[j-1][i]+field[j][i]; trip=0; int from,to; while(scanf("%d,%d,&from,&to") && (from || to)) { chase[trip].x=from; chase[trip].y=to; scanf(" %c",&chase[trip].direct); ++trip; } } void search(int step,int x,int y) { int i; if (found) return; if (step==trip){ ++ans; found=1; return; } for(i=chase[step].x;i<=chase[step].y;++i){ int x0=x,y0=y; switch (chase[step].direct){ case 'R':y0+=i;break; case 'L':y0-=i;break; case 'U':x0-=i;break; case 'D':x0+=i;break; } if(x0>=1 && x0<=m && y0>=1 && y0<=n) switch(chase[step].direct){ case'R': case'L': if (row[x0][max(y,y0)]==row[x0][min(y,y0)-1]) search(step+1,x0,y0); break; case 'U': case 'D': if (column[max(x,x0)][y0]==column[min(x,x0)-1][y0]) search(step+1,x0,y0); break; } } } int main(void){ int i,j; for (i=1;i<=m;++i) row[i][0]=0; for(i=1;i<=n;++i) column[0][i]=0; int iCase; scanf("%d",&iCase); while (iCase--){ initialize(); ans=0; for(i=1;i<=m;++i) for(j=1;j<=n;++j) if (!field[i][j]) { found=0; search(0,i,j); } printf("%d\n",ans); } return 0; }
我要举报
如以上问答内容为低俗/色情/暴力/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
点此我要举报以上问答信息
推荐资讯