hdu3779—記憶化搜尋

來源:互聯網
上載者:User
//兩列火車入站,重新排列的車廂符不符合要求//記憶化搜尋,ans[i][j]記錄的是第一列火車的第i節和第二列火車的第j列在組合後的序列裡找不找的到//如果找的到就標記為1,因為是從前到後搜尋,所以在ans[n][m]=1時,表示符合#include <iostream>#include<stdio.h>#include<string.h>using namespace std;#define N 1005bool ans[N][N];int str1[N],str2[N],str3[N*2];int n,m,t;void solve(int n1,int n2){    if(n1>n||n2>m) return ;    if(n1==n&&n2==m)    {        ans[n1][n2]=1; return ;    }    if(ans[n1][n2]) return ;    ans[n1][n2]=1;    if(str3[n1+n2+1]==str1[n1+1]&&!ans[n][n])        solve(n1+1,n2);    if(str3[n1+n2+1]==str2[n2+1]&&!ans[n][n])        solve(n1,n2+1);}int main(){    int i,j,k;    while(scanf("%d%d",&n,&m),n&&m)    {        for(i=1;i<=n;i++) scanf("%d",&str1[i]);        for(i=1;i<=m;i++) scanf("%d",&str2[i]);        for(i=1;i<=n+m;i++) scanf("%d",&str3[i]);        memset(ans,0,sizeof(ans));        solve(0,0);        if(ans[n][m]) puts("possible");        else puts("not possible");    }    return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.