博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 1256解题报告
阅读量:4204 次
发布时间:2019-05-26

本文共 834 字,大约阅读时间需要 2 分钟。

好吧。最近一发不可收拾了。应该是找工作笔试各种挫折打击到了。

这道题有深搜的做法,看得不是很懂。。。我用递归求全排列,然后所有生成的字符串用sort排序去重输出,不出所料的超过了存储空间。。。

于是看到如下的思路,大家可以移步这里:

程序很好读,用的是stl里面的next_permutation函数,只需要实现一个cmp函数即可。

函数实现可以像这位仁兄一样给大小写字母交错赋值,也可以像这样写:

bool cmp(char a, char b){	if(tolower(a) == tolower(b))		return a < b;	return tolower(a) < tolower(b);}
因为基本上还是按照不分大小写的字母序的。如果是大小写关系,单独处理一下就好。

程序如下,也已经特别向之前链接上的了。。。

#include 
#include
#include
#include
using namespace std;map
vals;bool cmp(char a, char b){ return vals[a] < vals[b];}int main(){ int n; scanf("%d", &n); if(n <= 0) return 0; for(char c = 'A'; c <= 'Z'; ++c) { vals[c] = (c - 'A') * 2; } for(char c = 'a'; c <= 'z'; ++c) { vals[c] = (c - 'a') * 2 + 1; } for(int i = 0; i < n; ++i) { string str; cin>>str; sort(str.begin(), str.end(), cmp); do { cout<
<

转载地址:http://fxxli.baihongyu.com/

你可能感兴趣的文章
java反射详解
查看>>
JPA 注解
查看>>
JQuery 简介
查看>>
Java创建对象的方法
查看>>
Extjs自定义组件
查看>>
TreeGrid 异步加载节点
查看>>
Struts2 标签库讲解
查看>>
Google Web工具包 GWT
查看>>
材料与工程学科相关软件
查看>>
MPI的人怎么用仪器
查看>>
windows 下AdNDP 安装使用
查看>>
Project 2013项目管理教程(1):项目管理概述及预备
查看>>
ssh客户端后台运行
查看>>
哥去求职,才说了一句话考官就让我出去
查看>>
【React Native】把现代web科技带给移动开发者(一)
查看>>
【GoLang】Web工作方式
查看>>
Launch Sublime Text 3 from the command line
查看>>
【数据库之mysql】mysql的安装(一)
查看>>
【数据库之mysql】 mysql 入门教程(二)
查看>>
【HTML5/CSS/JS】A list of Font Awesome icons and their CSS content values(一)
查看>>