NPSC補完計劃

登入註冊帳號.

請輸入帳號, 密碼以及預計登入時間
進階搜尋  

最新消息:

歡迎光臨NPSC補完計劃

+ NPSC補完計劃 » NPSC國中組 » NPSC2011國中組初賽
 C、導覽形機器人

作者 主題: C、導覽形機器人  (閱讀 1169 次)

joe59491

  • 初級會員
  • **
  • 文章數: 30
  • qazwsxedcrfvtg14
    • 檢視個人資料
C、導覽形機器人
« 於: 十一月 26, 2011, 08:12:10 pm »

這題就只要『小心』就好了...
我先找出0的位置,再從那點找出周圍可以走的點...

程式碼:
代碼: [選擇]
#include <iostream>
#include <stdio.h>
#include <string>
#include <stdlib.h>
#include <sstream>
using namespace std;
int map[1000][1000];
int main(){
    int a,b,c,d,e,f,g,h,i,j,k,l,m;
    string s,ss;
    scanf("%d",&a);
    for(b=0;b<a;b++){
scanf("%d%d",&c,&d);
for(e=0;e<100;e++){
for(f=0;f<100;f++){
map[e][f]=-1;
}
}
for(e=1;e<c+1;e++){
for(f=1;f<d+1;f++){
scanf("%d",&map[e][f]);
}
}
int x,y,n=0;
for(e=1;e<c+1;e++){
for(f=1;f<d+1;f++){
if(map[e][f]==0){x=e,y=f;}
}
}
s="";
while(1){
if(map[x+1][y]==n+1){s+="S";x++;}
else if(map[x-1][y]==n+1){s+="N";x--;}
else if(map[x][y+1]==n+1){s+="E";y++;}
else if(map[x][y-1]==n+1){s+="W";y--;}
else{break;}
n++;
}
ss="";s+=" ";
char ch=s[0];
int p=0;
for(e=0;e<s.length();e++){
if(s[e]!=ch){cout<<ch<<p;ch=s[e];p=1;}
else{p++;}
}
printf("\n");
}
   return 0;
}
« 上次編輯: 十一月 26, 2011, 09:03:42 pm 由 sagit »
記錄
(\ (\
(^_^) --by joe59491
+ NPSC補完計劃 » NPSC國中組 » NPSC2011國中組初賽
 C、導覽形機器人