POJ 1256 DFS

原创 2012年03月22日 15:53:59

      这道题的排序需要好好想一下,之后的由于序列是无重复的,所以在dfs的时候需要特殊处理一下即可。题目:

Anagram
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 14869   Accepted: 6085

Description

You are to write a program that has to generate all possible words from a given set of letters. 
Example: Given the word "abc", your program should - by exploring all different combination of the three letters - output the words "abc", "acb", "bac", "bca", "cab" and "cba". 
In the word taken from the input file, some letters may appear more than once. For a given word, your program should not produce the same word more than once, and the words should be output in alphabetically ascending order. 

Input

The input consists of several words. The first line contains a number giving the number of words to follow. Each following line contains one word. A word consists of uppercase or lowercase letters from A to Z. Uppercase and lowercase letters are to be considered different. The length of each word is less than 13.

Output

For each word in the input, the output should contain all different words that can be generated with the letters of the given word. The words generated from the same input word should be output in alphabetically ascending order. An upper case letter goes before the corresponding lower case letter.

Sample Input

3
aAb
abc
acba

Sample Output

Aab
Aba
aAb
abA
bAa
baA
abc
acb
bac
bca
cab
cba
aabc
aacb
abac
abca
acab
acba
baac
baca
bcaa
caab
caba
cbaa

Hint

An upper case letter goes before the corresponding lower case letter. 
So the right order of letters is 'A'<'a'<'B'<'b'<...<'Z'<'z'.
ac代码:

#include <iostream>
#include <cstdio>
#include <string.h>
#include <algorithm>
using namespace std;
int len;
char ch[15],ss[15];
int visted[15];
bool cmp(char a,char b){
  double t1=a,t2=b;
  if(a>='A'&&a<='Z') t1+=31.5;
  if(t2>='A'&&t2<='Z') t2+=31.5;
  return t1<t2;
}
void dfs(int x){
	if(x==len){
	  char str[15];
	  for(int i=0;i<len;++i)
		  //str[i]=ch[i];
	  //str[len]='\0';
	  printf("%c",ch[i]);
	  printf("\n");
	}
	else{
		for(int i=0;i<len;++i){
			if(!visted[i]){
			  ch[x]=ss[i];
			  visted[i]=1;
			  dfs(x+1);
			  visted[i]=0;
			  while(i+1<len&&ss[i+1]==ss[i])i++;
			}
		}
	}
}
int main(){
  int numcase;
  scanf("%d",&numcase);
  while(numcase--){
	memset(visted,0,sizeof(visted));
    ss[15];
	scanf("%s",ss);
	len=strlen(ss);
    sort(ss,ss+len,cmp);
	dfs(0);
  }
  return 0;
}


POJ1256 Anagram(回溯法)

#include #include #include using namespace std; char str[15]; //存储输入字符串 char out[15]; //存储输出字...
  • SeasonJoe
  • SeasonJoe
  • 2016年02月17日 21:44
  • 811

POJ - 1256 Anagram

Anagram Time Limit: 1000MS   Memory Limit: 10000KB   64bit IO Format: %I64d & %I64u Submit S...
  • qq_18738333
  • qq_18738333
  • 2015年03月20日 23:46
  • 321

poj 1256(Anagram)

这道题目确实花了我不少时间,因为好多基础知识我都忘了,大概还是当初没有掌握好的原因吧,连带传送地址的交换变量都给忘了,还有一些字符串函数,比如字符串比较函数,字符串复制函数。 qsort函数的用法也...
  • sinat_22659021
  • sinat_22659021
  • 2015年03月18日 23:09
  • 374

poj1256

//============================================================================ // Name : 1256...
  • swwlqw
  • swwlqw
  • 2013年10月16日 18:10
  • 892

poj 1256

poj 1256 dfs +剪枝 // poj 1256 #include #include #include #include using namespace std; int f...
  • Law_light
  • Law_light
  • 2016年09月22日 22:04
  • 111

POJ1256 && 1979 深搜入门

简单题,经典题:POJ1526 UVA5712 #include #include #define M 105 char pic[M][M]; int m,n,idx[M][M]; void D...
  • Since_natural_ran
  • Since_natural_ran
  • 2016年08月05日 17:20
  • 385

北大POJ题库使用指南

[转载]北大POJ题库使用指南  (2012-03-30 21:54:45) 转载▼ 标签:  转载 分类: ACM 原文地址:...
  • Enjoying_Science
  • Enjoying_Science
  • 2014年11月05日 19:59
  • 3365

poj1256

Link: 这道题应用到了c++中的next_permutation()函数,这里要注意的是要
  • u012577123
  • u012577123
  • 2014年10月24日 20:45
  • 501

POJ1256

题目链接:http://poj.org/problem?id=1256 排列问题,在头文件algorithm里有这么一个函数:next_permutation(),参数和sort()相同,就是求数组...
  • qust1508060414
  • qust1508060414
  • 2016年08月19日 23:27
  • 112

poj--1256

Anagram Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 18629 Accepted: 7576 Descripti...
  • MBLHQ
  • MBLHQ
  • 2015年09月21日 20:36
  • 152
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POJ 1256 DFS
举报原因:
原因补充:

(最多只允许输入30个字)