1004
来源:互联网 发布:私募通数据库 编辑:程序博客网 时间:2024/06/16 02:05
这题有两种方法,第一种是用map标记一下。
第二种是用最小表示法,但是我用第二种方法却过不了,希望大神们来找找错。
第一种:
<pre name="code" class="cpp">#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <map>using namespace std;string ch;map<string,int>q;int main(){int N,len;cin.sync_with_stdio(false);cin>>N;q.clear();for(int i=1;i<=N;i++){cin>>ch;sort(ch.begin(),ch.end());//对每个串内部排下序 即string类型的排序 printf("%d\n",q[ch]);q[ch]++;}return 0;}
第二种:
#include <iostream>#include <cstdio>#include <cstring>#include <map>using namespace std;string a;map<string,int>flag;int main(){ int N; int i,j,k,m,n,len,num; string s; scanf("%d",&N); num=0; flag.clear(); for(i=1;i<=N;i++) { s=""; cin>>a; j=0; k=1; len=a.size(); while(k<len) { if(a[j]<a[k]) k++; else if(a[j]>a[k]) { j=k; k=j+1; } else { int sum; m=j; n=k; for(sum=1;sum<len;sum++) { m%=len; n%=len; if(a[m]<a[n]) { k++; break; } else if(a[m]>a[n]) { j=k; k++; break; } m++; n++; } if(sum==len) { k++; } } } int p; for(p=1;p<=len;p++) { s=s+a.substr(j,1) ; j++; j%=len; } printf("%d\n",flag[s]);flag[s]++; }return 0;}
0 0
- [1004]
- 1004
- 1004
- 1004
- 1004
- 1004
- 1004
- 1004
- 1004
- 1004
- 1004
- 1004
- 1004
- 1004
- 1004
- 1004
- 1004
- 1004
- tomcat性能调优
- SiteWhere如何连接MongoDB
- UVALive 6277 - Addictive Bubbles (模拟)
- 获取数组的最小值
- 决策树二
- 1004
- Pascal's Triangle II
- 【一天一道LeetCode】#51. N-Queens
- tableViewCell、collectionViewCell、组头组尾等总结
- 自定义View系列教程04--Draw源码分析及其实践
- Java并发编程:线程池的使用
- Visual Studio调试服务端程序:w3wp进程消失 解决办法
- 架构漫谈(七):不要空设架构师这个职位,给他实权
- 有关ios硬件的部分的