这个题目的难点在于剔除含有相同数字和个数的字符,本蒟蒻第一时间想到的是将每个数字改成字符串然后将每个字符串都排序一遍,这样就变成了相同的数。
ac代码:
#include<bits/stdc++.h> using namespace std; map<string,int>ma; set<string>se; struct str//保存当前字符串和该字符串排序后的字符串 { string s; string ss; }str[10005]; bool cmp(char a,char b) { return a<b; } int main() { int n; while((scanf("%d",&n))&&n!=0) { for(int i=0;i<n;i++) { string s; cin>>s; str[i].s=s; int l=s.length(); sort(s.begin(),s.end(),cmp);//从小到大排序 str[i].ss=s; ma[s]++;//对每个排序后的字符串数量保存下来 } for(int i=0;i<n;i++) { if(ma[str[i].ss]==1)//如果该字符串只出现一次,就装如set { se.insert(str[i].s); } } if(se.empty())//如果set为空就输出None { printf("None\n"); continue; } set<string>::iterator it; for(it=se.begin();it!=se.end();it++)//输出 { cout<<*it<<' '; } cout<<endl; ma.clear();//清空map se.clear();//清空set } return 0; }
0.0分
3 人评分
C语言程序设计教程(第三版)课后习题8.1 (Java代码)浏览:828 |
【数组的距离】 (C语言代码)浏览:787 |
printf基础练习2 (C语言代码)浏览:955 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:563 |
C语言训练-计算t=1+1/2+1/3+...+1/n (C语言代码)浏览:942 |
简单的for循环浏览:1495 |
用筛法求之N内的素数。 (C语言代码)浏览:890 |
矩阵乘方 (C语言代码)浏览:1079 |
循环入门练习6 (C语言代码)浏览:1058 |
C二级辅导-统计字符 (C语言代码)浏览:514 |