数字哑谜和回文
2014-09-14 21:53
106 查看
1.人过大佛寺*我=寺佛大过人
1.最长回文子串
2.最长回文子序列
#include<iostream> using namespace std; #define true 1 #define false 0 int 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]; }
相关文章推荐
- 数字哑谜和回文游戏
- 编程之美:第四章 数字之趣 4.10数字哑谜和回文
- 读书笔记之编程之美 - 4.10 数字哑谜和回文
- 编程之美-数字哑谜和回文方法整理
- 编程之美:第四章 数字之趣 4.10_2数字哑谜和回文
- 数字哑谜和回文
- 《编程之美》 Problem4_10 数字哑谜和回文
- 编程之美 数字哑谜和回文小程序
- 4.10 数字哑谜和回文
- 数字哑谜和回文
- 《编程之美》4.10数字哑谜和回文
- 输入一串数字,求比这个数大的下一个回文数
- Leetcode 07 Reverse Integer(数字反转) && 09 Palindrome number(回文判断)
- Python中filter()实现找回文数字
- 求解逆波兰表达式的值,回文数字的判断&&栈的应用
- c编程:判断10000以内的正整数哪些是回文数字。
- 编程之美——数字哑谜
- 【蓝桥杯】PREV-21 回文数字
- 特殊回文数字:求出5位数和6位数中各位上的数字之和为n的回文数。
- 华为编程题之二:回文数字猜想