哪位大佬能帮我看一下这个代码哪里错了?
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <vector>
#include <queue>
using namespace std;
const int N = 205;
int n , m , k;
int f[N][N] , val[N][N] , need[N][N] , cost[N][N];
char c[N][N];
int dp[N][N];
int main( ) {
cin >> n >> m >> k;
for( int i = 1 ; i <= n ; i++ ){
for( int j = 1 ; j <= m ; j++ ){
cin >> f[i][j] >> c[i][j];
}
}
//memset( dp , 191 , sizeof( dp ) );
for( int i = 1 ; i <= m ; i++ ) dp[i][0] = 0;
for( int i = 1 ; i <= m ; i++ ){
for( int j = n ; j >= 1 ; j-- ){
val[j][i] = val[j+1][i] + f[j][i];
cost[j][i] = cost[j+1][i] + (int)( c[j][i] == 'N' );
if( j == n ) need[j][i] = 1;
else need[j][i] = need[j+1][i] + (int)( c[j+1][i] == 'N' );
}
}
/*
for( int i = 1 ; i <= m ; i++ ){
for( int j = n ; j >= 1 ; j-- ){
cout << val[j][i] <<" ";
}cout << endl;
}
*/
for( int i = 1 ; i <= m ; i++ ){
for( int s = 0 ; s <= k; s++ ){
dp[i][s] = max( dp[i-1][s] , dp[i][s] );
for( int j = n ; j >= 1 ; j-- ){
if( need[j][i] <= s ){
dp[i][s] = max( dp[i-1][s-cost[j][i]] + val[j][i] , dp[i][s] );
}//else break;
}
}
//cout << dp[i][k] <<endl;
}
cout << dp[m][k] <<endl;
return 0;
}