POJ1318 Word Amalgamation 简单模拟
来源:互联网 发布:免费提车软件 编辑:程序博客网 时间:2024/06/12 23:44
题意:
其实就是找匹配,先给定n个字符串形成一个字典库,然后再给你任意一个字符串,问你这个字符串经过字符随意组合能形成多少个字典库里面匹配的字符串。
思路:
因为字符串最长长度为6,库的大小最大为100,所以时间复杂度上要求很松。
不需要什么算法处理,简单的匹配模拟即可。
一次AC。
#include<iostream>#include<string>#include<vector>#include<algorithm>#define max(a,b) (a>b?a:b)#define abs(a) ((a)>0?(a):-(a))#define min(a,b) (a<b?a:b)using namespace std;const int N=105;int n,m;char a[N][8];char t[8];bool vis[8];int main(){while(scanf("%s",a[++n]),strcmp(a[n],"XXXXXX"));n--;while(scanf("%s",t),strcmp(t,"XXXXXX")){vector<string> vec;int len=strlen(t);for(int i=1;i<=n;i++)//遍历数组a寻找匹配对象{if(strlen(a[i])==len)//条件1:长度相等{memset(vis,0,sizeof(vis));int j=0;while(j<len)//条件2:遍历每个字符都可以在目标字符串里面的不同位置找到。{bool flag=false;for(int k=0;k<len;k++){if(!vis[k]&&a[i][j]==t[k]){vis[k]=true;j++;flag=true;//表示该字符已匹配break;}}if(!flag){break;}}if(j==len){vec.push_back(a[i]);}}}if(vec.empty())printf("NOT A VALID WORD\n");else{if(vec.size()>1)sort(vec.begin(),vec.end());for(vector<string>::iterator iter=vec.begin();iter!=vec.end();iter++)cout<<*iter<<endl;}printf("******\n");}return 0;}
- POJ1318 Word Amalgamation 简单模拟
- POJ1318 Word Amalgamation
- POJ1318 Word Amalgamation
- Word Amalgamation(poj1318) 解题报告
- HDU1113 POJ1318 UVA642 ZOJ1181 Word Amalgamation
- POJ 1318 Word Amalgamation (模拟)
- POJ 1318 Word Amalgamation (简单题)
- Word Amalgamation
- Word Amalgamation
- Word Amalgamation
- Word Amalgamation源程序
- fjnu 1147 Word Amalgamation
- POJ 1318 Word Amalgamation
- ZOJ 1181Word Amalgamation
- POJ 1318 Word Amalgamation
- poj 1318 Word Amalgamation
- 1318 Word Amalgamation
- POJ 1113 Word Amalgamation
- VB.Net使用CInt转型非整数值时需要注意的问题
- Java中的无声杀手 – Integer Overflow, 当心 !
- HTTP协议详解
- 两数交换不借助第三变量
- 彻底隐藏Nginx版本号的安全性与方法
- POJ1318 Word Amalgamation 简单模拟
- Boost 库中的实用工具类使用入门
- interfaceList工程打包
- 钎具行业产品需求管理解决方案
- C#的isnumeric。
- Android导入导出txt通讯录工具
- 关于反向代理
- c#自杀程序的关键方法
- Ubuntu11.10 + android环境配置流程