HDU5510Bazinga(暴力剪枝)
来源:互联网 发布:农村淘宝政府如何补贴 编辑:程序博客网 时间:2024/06/01 08:24
题意:问是否存在最大的j在j之前的字符串中有一个不是j的子串,
思路,剪枝:如果一个串已经是某个串的子串,下次就可以不用再检查他了,还有一个,如果这个串前有比他长的串,那么就可以直接判断是ok的
#include<bits/stdc++.h>using namespace std;#define LL long long#define pb push_back#define cl(a,b) memset(a,b,sizeof(a))const int maxn=2005;const int inf=1<<23;char a[501][2005];int len[2005];bool vis[maxn];int mxc[maxn];int main(){ int T; int cas=1; scanf("%d",&T); while(T--){ int n; scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%s",a[i]); mxc[i]=len[i]=strlen(a[i]); vis[i]=0; } len[0]=0;int mx=0; for(int i=2;i<=n+1;i++){ if(mx<len[i-1])mx=len[i-1]; mxc[i]=mx; } //for(int i=1;i<=n;i++)printf("%d ",mxc[i]); printf("Case #%d: ",cas++); int flag=0; for(int i=1;i<=n;i++){ if(mxc[i]>len[i]){ flag=i;continue; } for(int j=i-1;j>=1;j--){ if(vis[j]) continue; if(strstr(a[i],a[j])==NULL){ flag=i; } else vis[j]=1; } } if(flag){ printf("%d\n",flag); } else { printf("-1\n"); } } return 0;}
0 0
- HDU5510Bazinga(暴力剪枝)
- HDU5510Bazinga(KMP+剪枝)
- csu 1553 暴力+剪枝
- HDU5750 (暴力+剪枝)
- hdu5510 Bazinga 暴力+剪枝
- hdu5510Bazinga+KMP
- HDU5510Bazinga 【KMP】
- Raid(poj3714,暴力+剪枝)
- USACO ariprog 暴力枚举+剪枝
- Nightmare(暴力剪枝BFS)
- HDU5510 Bazinga 暴力strstr+剪枝
- poj 3714 Raid【(暴力+剪枝) || (分治法+剪枝)】
- poj 2870 Light Up 暴力搜索 + 剪枝
- URAL 1200 - Horns and Hoofs(暴力+剪枝)
- CodeForces 200A (暴力+剪枝)
- uva208 直接暴力会TLE,需要剪枝
- 找零钱问题(暴力枚举+剪枝)
- HDU 4876 ZCC loves cards(暴力剪枝)
- JAVA_SE基础——49.多态的应用
- 设计模式六大原则(6)-开闭原则
- JavaMail
- 流式计算的理论与技术
- Android Dialog点击按钮不关闭对话框
- HDU5510Bazinga(暴力剪枝)
- 大数据环境下的云计算与物联网
- flash乱码解决方案
- linux 内核链表(二)
- Android四大组件之Activity
- 解释器模式的一个应用
- 【LEETCODE】108-Convert Sorted Array to Binary Search Tree
- hdu5372Segment Game 树状数组
- LeetCode---Plus One