2016-09-01 9 views
-2

私は以下の問題の解決策を試しています。問題へコーデックシェフと彼のシーケンス

リンク:problem link

問題: シェフは、N個の数字の配列を有しています。シーケンスに好きなシーケンスが部分文字列として含まれていると、彼はシーケンスの方が好きです。

は、シーケンスを考えると、彼のお気に入りのシーケンス(F)は、好きなシーケンスがシーケンス

入力

最初の行は、テストケースの数が含まれ、例が続いているに含まれているかどうか確認してください。 各テストケースは4行で構成されています。シーケンスが好きなシーケンスがそうでなければ、それをint型含まれている場合、シーケンスの長さ、配列N、Fの長さおよび配列F

出力

印刷「はい」 「いいえ」と印刷します。

しかし、私は

私のコードにコード間違っanswer.Lookを取得しています:ループで

#include<iostream> 
using namespace std; 
int check(int *p,int *q,int n,int m) 
{ 
    int i,j,l; 
    for(i=0;i<n;i++) 
    { 
     if(p[i]==q[0]) 
     { 
      j=i; 
      for(l=0;l<m;l++) 
      { 
       if(q[l]==p[j]) 
        j++; 
       else 
        break; 
      } 
     } 
     if(l==m) 
      return 1; 
    } 
    return 0; 
} 
int main(void) 
{ 
    int a,*p,*q,m,t,i,n; 
    cin>>t; 
    while(t--) 
    { 
     cin>>n; 
     p=new int[n]; 
     for(i=0;i<n;i++) 
      cin>>p[i]; 
     cin>>m; 
     q=new int[m]; 
     for(i=0;i<m;i++) 
      cin>>q[i]; 
     if(check(p,q,n,m)==1) 
      cout<<"Yes"<<endl; 
     else 
      cout<<"No"<<endl; 
    } 
    return 0; 
} 
+0

質問のリンクをお願いします。 – Tempux

+1

あなたのコードは、いくつかの入力に対して間違った答えを計算します。テストしてみてください:コードにさまざまな入力を行い、その出力を確認してください。あなたのコードが間違った出力を提供する入力を見つけたら、ここに投稿してください(投稿を編集してください)。これは[mcve]と呼ばれます。あなたの投稿にそれがある場合、誰かがそれに答えることができるチャンスがあります。 – anatolyg

+0

ところで、オペレータやセミコロンのスペースを使ってプログラムを読みやすくすると、ポイントやクレジットは失われません。その使用法を反映する変数の名前も使用してください。 –

答えて

0

for (l = 0; l < m; l++) 

jが原因、nより大きくなる可能性が範囲外のアクセスはpになります。この結果、未定義の動作が発生します。すべての賭けはオフです。

関連する問題