讨论/技术交流/代码正确,LeetCode提交失败,很难受/
代码正确,LeetCode提交失败,很难受

eclipse运行结果正确,LeetCode测试也正确,提交不通过??

QQ图片20200408120339.png
QQ图片20200408120400.png

class Solution {

	static int ans=0;
	static int[] sM;
	static int[] sN;
	static int[][] flag;
	static int Mm,Nn,Kk;
	static int[] dx= {0,0,1,-1};
	static int[] dy= {-1,1,0,0};
	
	public static int movingCount(int m, int n, int k) {
		if(m==0||n==0)
			return 0;
        if(m+n<k)
			return n*m;
		//辅助数组,保存每个i,j对应的各位数字之和
		//广度优先搜索
		//BFS
		Mm=m;
		Nn=n;
		Kk=k;
		sM=new int[m];
		sN=new int[n];
		flag=new int[m][n];
		for(int i=0;i<m;i++) {//初始化sM
			int t=i;int y=0;int sum=0;
			while(t>0) {
				y=t%10;
				sum+=y;
				t=t/10;
			}
			sM[i]=sum;
		}
		for(int i=0;i<n;i++) {//初始化sN
			int t=i;int y=0;int sum=0;
			while(t>0) {
				y=t%10;
				sum+=y;
				t=t/10;
			}
			sN[i]=sum;
		}
		ans++;
		flag[0][0]=1;
		BFS(0,0);
		
		return ans;
    }
	
	private static void BFS(int mi, int ni) {
		if(mi>Mm||ni>Nn)
			return ;
		for(int i=0;i<4;i++) {
			int x=dx[i]+mi;int y=dy[i]+ni;
			if(x>=0&&y>=0&&x<Mm&&y<Nn&&flag[x][y]==0) {
				if(sM[x]+sN[y]<=Kk) {
					flag[x][y]=1;ans++;
					BFS(x,y);
					}
			}
		}
		return ;
	}
}

不看代码,盲猜一波,是不是使用了全局或者static变量,导致不可重入

展开全部 4 讨论