数字哑谜和回文

来源:互联网 发布:野兽派有淘宝店吗 编辑:程序博客网 时间:2024/05/01 07:41

1.人过大佛寺*我=寺佛大过人

#include<iostream>using namespace std;#define true 1#define false 0int main(){    bool flag;    bool IsUsed[10];    int number,revert_number,t,v;    for(number=10234;number<=98765;number++)    {        flag=true;        memset(IsUsed,0,sizeof(IsUsed));        t=number;        revert_number=0;        for(int i=0;i<5;i++)        {            v=t%10;            if(IsUsed[v])            {                flag=false;                break;            }            else IsUsed[v]=1;            revert_number=revert_number*10+v;            t/=10;        }        if(flag&&(revert_number%number==0))        {            v=revert_number/number;            if(v<10&&!IsUsed[v])cout<<number<<'*'<<v<<'='<<revert_number<<endl;        }    }    return 0;}

1.最长回文子串

2.最长回文子序列

int LPS(string s){int n=s.size();vector<vector<int> > dp(n,vector<int>(n,0));for(int i=n-1;i>=0;--i)  {dp[i][i]=1;  for(int j=i+1;j<n;++j)  {        if(s[i]==s[j])dp[i][j]=dp[i+1][j-1]+2;  else dp[i][j]=max(dp[i][j-1],dp[i+1][j]);  }}return dp[0][n-1];}//滚动数组int LPS(string s){int n=s.size();vector<vector<int> > dp(2,vector<int>(n,0));int now=0;for(int i=n-1;i>=0;--i)  {dp[i][i]=1;  for(int j=i+1;j<n;++j)  {        if(s[i]==s[j])dp[now][j]=dp[1-now][j-1]+2;  else dp[now][j]=max(dp[now][j-1],dp[1-now][j]);  }now=1-now;}return n&1?dp[0][n-1]:dp[1][n-1];}



0 0
原创粉丝点击