求助,是数组越界的导致的RE吗
  • 板块P1464 Function
  • 楼主koppe
  • 当前回复4
  • 已保存回复4
  • 发布时间2021/4/25 10:31
  • 上次更新2023/11/5 00:09:09
查看原帖
求助,是数组越界的导致的RE吗
474228
koppe楼主2021/4/25 10:31

找了好久,不知道bug可能在哪。


#include <stdio.h>
#include<string.h>
#include<ctype.h>
#include<math.h>
#include<stdlib.h>
#include<time.h>
#include<stdbool.h> 

int dp[20][20][20];

long long w(long long a,long long b, long long c){

	if(a<=0||b<=0||c<=0){
		return 1;
	}
     else if(a>20||b>20||c>20){
		return dp[20][20][20]=w(20,20,20);
	}
	 else if(dp[a][b][c]){
			return dp[a][b][c];
		}
else if(a<b&&b<c){
		 dp[a][b][c-1]=w(a,b,c-1); dp[a][b-1][c-1]=w(a,b-1,c-1) ;dp[a][b-1][c]=w(a,b-1,c);
		
		 return  dp[a][b][c-1]+dp[a][b-1][c-1]-dp[a][b-1][c];
	}else{
    dp[a-1][b][c]=w(a-1,b,c);dp[a-1][b-1][c]=w(a-1,b-1,c);dp[a-1][b][c-1]=w(a-1,b,c-1);dp[a-1][b-1][c-1]=w(a-1,b-1,c-1);
   
return	dp[a-1][b][c]+dp[a-1][b-1][c]+dp[a-1][b][c-1]-dp[a-1][b-1][c-1];
}
}

int main(){
long long a,b,c;
while(1){
	scanf("%lld %lld %lld",&a,&b,&c);
	if(a==-1&&b==-1&&c==-1){
		break;
	}
	printf("w(%lld,%lld,%lld)=%lld\n",a,b,c,w(a,b,c));
}



	return 0;
 }
2021/4/25 10:31
加载中...