我認為應該是測資有問題,造成輸入讀取時發生錯誤!
我認為應該是測資有問題,造成輸入讀取時發生錯誤!
盡力了! 請指教錯誤!
#include <iostream>
#include <string.h>
#include <sstream>
using namespace std;
long A[200][200];
bool v[200][200];
int R,C;
//----------------------------------------
void pA(){
for(int i=1; i<=R; i++){
for(int j=1; j<=C; j++) printf("%3d",A[i][j]);
cout<<endl;
}
cout<<"------------------------------------\n";
}
//========================================
int main(){
int n,x;
string str;
stringstream ss;
cin>>n;
while(n--){
memset(v,0,sizeof(v));
memset(A,0,sizeof(A));
scanf("%d %d\n",&R,&C);
for (int u=1; u<=R; u++) { //輸入
getline(cin, str);
stringstream ss(str);
ss>>x;
while(ss>>x) v[u][x]=true;
}
//pA();
//DP規劃
if(v[1][1]==false) A[1][1]=1; //防止小手段!
else A[1][1]=0;
for(int i=2; i<=R; i++){ //第一列
if(v[i][1]==false) A[i][1]=A[i-1][1];
else break;
}
//pA();
for(int j=2; j<=C; j++){ //第一行
if(v[1][j]==false) A[1][j]=A[1][j-1];
else break;
}
//pA();
for(int i=2; i<=R; i++){
for(int j=2; j<=C; j++)
if(v[i][j]==false) A[i][j]=A[i-1][j]+A[i][j-1];
//pA();
}
printf("%ld\n\n",A[R][C]);
}
return 0;
}
在輸入說明有提到「接下來的W列代表這W條東西向道路,每列的第一個數為這是第幾條東西向道路,接下來有0個或多個不等的數...」,
你的程式是依序從第1條~第R條做輸入, 雖然範例測資都是依序輸入沒錯, 但實際測資不保證輸入是1~R按照順序的。
在輸入說明有提到「接下來的W列代表這W條東西向道路,每列的第一個數為這是第幾條東西向道路,接下來有0個或多個不等的數...」,
你的程式是依序從第1條~第R條做輸入, 雖然範例測資都是依序輸入沒錯, 但實際測資不保證輸入是1~R按照順序的。
感謝! AC了
偏離了原來題目解題精神與主題,蠻無聊的。