zoukankan      html  css  js  c++  java
  • UVa 10950

    题目:有一种编码方式。串仅仅有小写字母构成,每一个小写字母相应一个数字,如今给你妆化后的数字串,

                问有多少个原串与之相应,注意数字串里可能有一个前导0。

    分析:搜索。按字母顺序存储映射表,按字母顺序匹配搜索就可以。

    说明:注意最多仅仅输出前100个。

    #include <iostream>
    #include <cstdlib>
    #include <cstring>
    #include <cstdio>
    
    using namespace std;
    
    char buf[101];
    
    int  code[128];
    char maps[128][5];
    char letter[128];
    
    int  Count = 0;
    char save[101];
    void dfs(int s, int d, int n, int m)
    {
    	if (Count == 100) return;
    	char word[101];
    	if (s == n) {
    		save[d] = 0;
    		printf("%s
    ",save);
    		Count ++;
    		return;
    	}
    	for (int k = 0 ; k < m ; ++ k) {
    		int count = 0;
    		for (int i = s ; i < n ; ++ i) {
    			word[count ++] = buf[i];
    			word[count] = 0;
    			if (!strcmp(word, maps[k]) || (word[0] == '0' && !strcmp(word+1, maps[k]))) {
    				save[d] = letter[k];
    				dfs(i+1, d+1, n, m);
    			}
    		}
    	}
    }
    
    int main()
    {
    	int  n,t = 1;
    	char c;
    	while (~scanf("%d",&n) && n) {
    		memset(code, 0, sizeof(code));
    		for (int i = 0 ; i < n ; ++ i) {
    			getchar();
    			scanf("%c",&c);
    			scanf("%d",&code[c]);
    		}
    		
    		int count = 0;
    		for (int i = 'a' ; i <= 'z' ; ++ i)
    			if (code[i] > 0 && code[i] < 100) {
    				letter[count] = i;
    				if (code[i] > 9) {
    					maps[count][0] = code[i]/10 + '0';
    					maps[count][1] = code[i]%10 + '0';
    					maps[count][2] = 0;
    				}else {
    					maps[count][0] = code[i] + '0';
    					maps[count][1] = 0;
    				}
    				count ++;
    			}
    		
    		scanf("%s",buf);
    		printf("Case #%d
    ",t ++);
    		Count = 0;
    		dfs(0, 0, strlen(buf), count);
    		printf("
    ");
    	}
    	return 0;
    }
    

  • 相关阅读:
    MySql创建库 Challenge
    未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值的解决办法.
    小总结:用反射机制创建的分配数据分配器
    工厂模式的反思
    单机安装“完整”SharePoint 2010
    作业调度框架 Quartz.NET 2.0 StepByStep(2)
    UI线程同步
    每日见闻(一)
    作业调度框架 Quartz.NET 2.0 StepByStep
    基础算法(ACwing)
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/6884707.html
Copyright © 2011-2022 走看看