Skip to content

Instantly share code, notes, and snippets.

@nahiyan
Created December 22, 2019 03:06
Show Gist options
  • Select an option

  • Save nahiyan/1867d43e9f037e33aef1a45971609413 to your computer and use it in GitHub Desktop.

Select an option

Save nahiyan/1867d43e9f037e33aef1a45971609413 to your computer and use it in GitHub Desktop.

Revisions

  1. nahiyan created this gist Dec 22, 2019.
    38 changes: 38 additions & 0 deletions assignment2.cpp
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,38 @@
    #include <stdio.h>
    #include <string.h>

    int main() {
    int n, i, j, flag, order;
    int x[20], y[20];
    scanf("%d", & n);
    for (i = 0; i < n; i++) {
    scanf("%d", & order);
    order--;
    x[order] = i;
    }
    while (1) {
    flag = 0;
    for (i = 0; i < n; i++) {
    if (scanf("%d", & order) != 1) {
    flag = 1;
    break;
    }
    order--;
    y[order] = i;
    }
    if (flag) break;
    int dp[25][25] = {};
    for (i = 1; i <= n; i++) {
    for (j = 1; j <= n; j++) {
    if (x[i - 1] == y[j - 1])
    dp[i][j] = dp[i - 1][j - 1] + 1;
    else
    dp[i][j] = dp[i - 1][j] >
    dp[i][j - 1] ?
    dp[i - 1][j] : dp[i][j - 1];
    }
    }
    printf("%d\n", dp[n][n]);
    }
    return 0;
    }