Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #define MAX 100
- const int x[MAX] = {100,10,15,5,25,22,12,22};
- const unsigned n = 7;
- int LNS[MAX][MAX];
- unsigned LNS_Length(void){
- unsigned i,j,r;
- for(i = 0; i <= n; i++){
- for(j = 1; j <= n; j++)
- LNS[i][j] = MAX +1;
- LNS[i][0] = -1;
- }
- r = 1;
- for(i = 1; i <= n; i++){
- for(j = 1; j <= n; j++){
- if(LNS[i - 1][j - 1] <= x[i] && x[i] <= LNS[i - 1][j]
- && LNS[i - 1][j - 1] <= LNS[i - 1][j]) {
- LNS[i][j] = x[i];
- if (r < j)
- r = j;
- } else
- LNS[i][j] = LNS[i - 1][j];
- }
- }
- return r;
- }
- void LNS_Print2(unsigned i, unsigned j) {
- if(0 == i) return;
- if(LNS[i][j] == LNS[i - 1][j])
- LNS_Print2(i - 1, j);
- else {
- LNS_Print2(i,j - 1);
- printf("%d ", x[i]);
- }
- }
- int main(){
- unsigned len = LNS_Length();
- printf("%u дължина\n", len);
- LNS_Print2(n,len);
- puts("");
- return 0;
- }
Add Comment
Please, Sign In to add comment