记录编号 | 415241 | 评测结果 | AAAAAAAAAA | ||
---|---|---|---|---|---|
题目名称 | [LOL2000] 回文词 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | C++ | 运行时间 | 1.202 s | ||
提交时间 | 2017-06-15 20:30:53 | 内存使用 | 96.07 MiB | ||
#include <iostream> #include <cstring> #include <cstdio> #include <cstdlib> #include <cmath> #include <algorithm> #include <queue> #include <stack> #include <map> #include <set> #include <list> #include <vector> #include <ctime> #include <iterator> #include <functional> #define pritnf printf #define scafn scanf #define For(i,j,k) for(int i=(j);i<=(k);(i)++) using namespace std; typedef long long LL; typedef unsigned int Uint; const int INF=0x7ffffff; //==============struct declaration============== //==============var declaration================= int f[5010][5010]; //f[i][j]表示从i..j的字符串最少需要多少 int len; char ch[5010]; //==============function declaration============ int dp(int s,int e); //==============main code======================= int main() { string FileName="palin";//程序名 string FloderName="COGS";//文件夹名 freopen((FileName+".in").c_str(),"r",stdin); freopen((FileName+".out").c_str(),"w",stdout); #ifdef DEBUG system(("cp C:\\Users\\Administrator\\Desktop\\"+FloderName+"\\standard.cpp C:\\Users\\Administrator\\Desktop\\"+FloderName+"\\submit.txt").c_str()); clock_t Start_Time=clock(); #endif scanf("%d",&len); cin.ignore(10,10); cin.getline(ch,10000); memset(f,-1,sizeof(f)); pritnf("%d\n",dp(0,len-1)); #ifdef DEBUG clock_t End_Time=clock(); pritnf("\n\nTime Used: %.6lf",(End_Time-Start_Time)/CLOCKS_PER_SEC); #endif return 0; } //================fuction code==================== int dp(int s,int e) { if (f[s][e]!=-1) return f[s][e]; if (s>e) return INF; if (e==s+1 && ch[s]==ch[e]) return 0; if (s==e) return f[s][e]=0; if (ch[s]==ch[e]) return f[s][e]=dp(s+1,e-1); return f[s][e]=min(dp(s+1,e),dp(s,e-1))+1; }