python은 같은문자를 여러개 넣으면 왜 이상한 답을 내놓는 것일까요? (ex input) aaa / aaaaa , ex output) 2)
python은 공부를 한지 얼마 안되서 제가 모르는 어떤 차이점이 있는 건가요?
c++ 코드
#include
using namespace std;
#define FastFC ios_base::sync_with_stdio(false),cin.tie(NULL),cout.tie(NULL)
string A, B;
int ans_pos_a, ans_pos_b;
int dp[1050][1050];
int solve(int pos_a, int pos_b) {
if (A.length() == pos_a)return 0;
int& ret = dp[pos_a][pos_b];
if (ret != -1)return ret;
ret = solve(pos_a + 1, pos_b);
for (int i = pos_b; i < B.length(); i++)
if (A[pos_a] == B[i]) {
ret = max(ret, 1 + solve(pos_a + 1, i + 1));
break;
}
return ret;
}
int main() {
FastFC;
cin >> A >> B;
memset(dp, -1, sizeof(dp));
cout << solve(0, 0);
return 0;
}
python 코드import sys
sys.setrecursionlimit(10 ** 6)
def solve(pos_a, pos_b):
global len_a, len_b, A, B
if len_a == pos_a:
return 0
if dp[pos_a][pos_b] != -1:
return dp[pos_a][pos_b]
dp[pos_a][pos_b] = solve(pos_a + 1, pos_b)
for i in range(pos_b, len_b):
if A[pos_a] == B[i]:
dp[pos_a][pos_b] = max(dp[pos_a][pos_b], solve(pos_a + 1, i + 1) + 1)
return dp[pos_a][pos_b]
A, B = input(), input()
len_a, len_b = len(A), len(B)
dp = [[-1] * (len_b + 1)] * (len_a + 1)
print(solve(0, 0))
cclang 3년 전
c++, python 코드 두개 똑같이 짠 것 같은데
python은 같은문자를 여러개 넣으면 왜 이상한 답을 내놓는 것일까요? (ex input) aaa / aaaaa , ex output) 2)
python은 공부를 한지 얼마 안되서 제가 모르는 어떤 차이점이 있는 건가요?
c++ 코드
python 코드import sys
아 무엇이 문제인지는 알았습니다.
그런데 왜
를 하면
dp[1][0]
...
dp[N][0] 도 1로 바뀌는 것인가요?