Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

有没有大佬帮忙看看我的程序哪儿出bug了.

Posted by 40962501 at 2017-07-25 23:53:20 on Problem 1071
#include<iostream>
#include<memory.h>
using namespace std;
int map[101][101];   //用于储存相应的地图 
int dp[101][101][200];  //用于记录第k次是否能到达 (i,j)这个位置 
int a[201],b[201],c[201];   //用于记录相应的走的区间最小值,最大值,方向 
int main(){
	int cases;
	cin>>cases;
	while(cases--){
	memset(map,0,sizeof(map));
	int m,n;
	memset(dp,0,sizeof(dp));
	cin>>m>>n;
	for(int i=0;i<m;i++){
		for(int j=0;j<n;j++){
			cin>>map[i][j];
		}
	}
	int cnt=0;
	int aa,bb;

	while(1){
		cin>>aa>>bb;
		if(aa==0&&bb==0) break;
		char s[3];
		cin>>s;

		switch(s[0]){
			case 'R': {
			c[cnt]=0;
			break;
			}
			case 'L':{
				c[cnt]=1;
				break;
			}
			case 'U':{
				c[cnt]=2;
				break;
			}
			case 'D':{
				c[cnt]=3;
				break;
			}
			default: break;
		}
		a[cnt]=aa;
		b[cnt++]=bb;


	
	}
/*	for(int i=0;i<cnt;i++){
		cout<<a[i]<<" "<<b[i]<<" "<<c[i]<<endl; 
	}*/
/*	for(int i=0;i<m;i++){
		for(int j=0;j<n;j++){
			cout<<map[i][j]<<" ";
		}
		cout<<endl; 
	}*/
	for(int i=0;i<m;i++){
		for(int j=0;j<n;j++){
			if(map[i][j]==0){
				dp[i][j][0]=true;
			}
		}
	} 
	for(int cntt=0;cntt<cnt;cntt++){
	    for(int i=0;i<m;i++){
	    	for(int j=0;j<n;j++){
	    		if(dp[i][j][cntt]){
	    			if(c[cnt-cntt-1]==1){
	    				for(int k=a[cnt-cntt-1];k<=b[cnt-cntt-1];k++){
	    					if(j+k<n&&map[i][j+k]==0) dp[i][j+k][cntt+1]=true;
	    					else break;
						}
					}
				
					if(c[cnt-cntt-1]==0){
	    				for(int k=a[cnt-cntt-1];k<=b[cnt-cntt-1];k++){
	    					if(j-k>=0&&map[i][j-k]==0) dp[i][j-k][cntt+1]=true;
	    					else break;
						}
					}
					if(c[cnt-cntt-1]==3){
	    				for(int k=a[cnt-cntt-1];k<=b[cnt-cntt-1];k++){
	    					if(i-k>=0&&map[i-k][j]==0) dp[i-k][j][cntt+1]=true;
	    					else break;
						}
					}
					if(c[cnt-cntt-1]==2){
	    				for(int k=a[cnt-cntt-1];k<=b[cnt-cntt-1];k++){
	    					if(i+k<m&&map[i+k][j]==0) dp[i+k][j][cntt+1]=true;
	    					else break;
						}
					}
				}
				
			}
		}	
	}
	
	//cout<<endl<<endl;
	/*for(int i=0;i<m;i++){
		for(int j=0;j<n;j++){
			cout<<dp[i][j][3]<<" ";
		}
	    cout<<endl;
	} 
	*/
	int cnttt=0;
	for(int i=0;i<m;i++){
		for(int j=0;j<n;j++){
			if(dp[i][j][cnt]==1){
				cnttt++;
			}
		}
	}
	cout<<cnttt<<endl; 
	}
} 

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator