C 언어로 짠 LIS문제인데 WA이유좀 알려주세요

  • ParkHoYong
    ParkHoYong

    결과가 분명이 맞게 나오는데 왜 나올까요...알려주세요

    #include <iostream>
    #include <stdio.h>
    using namespace std;
    
    int main()
    {
      unsigned int cyc,value_cnt;
      unsigned int value_int[500];
      unsigned int lis,listemp;
    
      scanf("%d",&cyc);
      for(unsigned int c=0;c<cyc;c++)
      {
        scanf("%d",&value_cnt);
        for(unsigned int m=0;m<value_cnt;m++)
        {
          scanf("%d",&value_int[m]);
        }
        lis=1;
    
        listemp=1;
        for(unsigned int j=1;j<value_cnt;j++)
        {
          if(value_int[j-1]<value_int[j])
          {
            listemp++;
            if(listemp>lis)
            {
              lis=listemp;
            }
          }
          else
          {
            listemp=1;
          }
        }
    
        printf("%d\n",lis);
      }
      return 0;
    }
    

    13년 전
5개의 댓글이 있습니다.
  • Corea
    Corea

    1 3 2 의 Input에서도 정상적으로 나오는가요;;?


    13년 전 link
  • ParkHoYong
    ParkHoYong

    헐...그렇네요...;;일단 Corea님께 감사합니다..ㅠㅠ


    13년 전 link
  • ParkHoYong
    ParkHoYong

    고쳤는데도 안되요..ㅠㅠ


    13년 전 link
  • hyunhwan
    hyunhwan

    문제를 잘못 이해하신것 같습니다.

    1 3 2 4 의 경우 현재 ParkHoYong님의 방식대로라면 2라는 답이 나오겠지만, 3이라는 숫자를 지우면 1 2 4라는 subsequence를 얻을 수 있고, 이것이 가장 좋은 답인 3이 됩니다.

    "어떤 정수 수열에서 0개 이상의 숫자를 지우면 이 수열의 부분 수열 (subsequence) 를 얻을 수 있다. 예를 들어 10 7 4 9 의 부분 수열에는 7 4 9, 10 4, 10 9 등이 있다. 단, 10 4 7 은 원래 수열의 순서와 다르므로 10 7 4 9 의 부분 수열이 아니다."

    라는 문제의 첫 문장을 한번 차근 차근 읽어보시길 바랍니다.


    13년 전 link
  • ParkHoYong
    ParkHoYong

    아 ...그렇군요 감사합니다....부분수열을 잘못이해하고 있었네요


    13년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.