360在线笔试编程题2018
2017-03-18 21:39
225 查看
题目:
使用动态规划方法,代码如下:
使用动态规划方法,代码如下:
#include<iostream> #include<vector> using namespace std; bool check(int *color, int pos, int start, int end) { for(int i=start;i<=end;i++){ if(*(color+i)==*(color+pos)){ return true; } } return false; } int findsame(int *color, int pos ,int len) { int i=1; while((pos+i)<len&&*(color+pos)!=*(color+pos+i)){ i++; } return pos+i; } unsigned int getMaxCut(int *color, int len) { unsigned int **p; p = new unsigned int * [len]; for(int i=0;i<len;i++) { p[i] = new unsigned int[len]; for(int j=0;j<len;j++) { if(i==j){ p[i][j]=1; }else{ p[i][j] = 0; } } } for(int k=2;k<=len;k++) { for(int j=0;j<len-k+1;j++) { if(check(color,j,j+1,j+k-1)) { int same=findsame(color,j,len); if(same-1!=j){ p[j][j+k-1]=p[j+1][same-1]*p[same][j+k-1]*4-1; }else{ p[j][j+k-1]=p[same][j+k-1]; } }else { p[j][j+k-1]=2*p[j+1][j+k-1]; } } } return p[0][len-1]; } int main() { int len; cin>>len; int *color = new int[len]; for(int i=0;i<len;i++) cin>>*(color+i); cout<<getMaxCut(color,len)<<endl; return 1; }
相关文章推荐
- 网易2018秋招笔试[编程题] 等差数列
- 2018搜狐内推笔试编程题2
- 【2018校招美团内推笔试编程题1】K的倍数
- (网易2018校招笔试)[编程题] 魔法币 Magic Coin
- (网易2018校招笔试)[编程题] 字符串碎片
- 华为2018校招研发笔试编程题总结
- 今日头条2018春季校园招聘研发岗位笔试编程题2
- 今日头条2018春季校园招聘研发岗位笔试编程题第一、二题
- 2018腾讯暑假实习生后台开发岗线上笔试编程题题解
- 360在线笔试编程题
- 阿里2018校招笔试编程题
- 【补题】网易 2018 校招笔试编程题 - 解题思路
- (网易2018校招笔试)[编程题] 相反数
- (网易2018校招笔试)[编程题] 游历魔法王国
- 2018科大讯飞在线笔试题(编程题部分)
- 2018链家笔试编程题
- 编程题(1):笔试题-京东软件测试2018实习招聘
- 2018校招笔试题——网易编程题跳石板
- 阿里2018校招客户端研发笔试之编程题
- 【2018校招美团笔试编程题2】改考卷