zoukankan      html  css  js  c++  java
  • P1071 潜伏者

    题目地址


    易错点:

    • "唯一对应"这一性质需要双向合法.

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    using namespace std;
    const int MAXN=2e2;
    char lock[MAXN],orignal[MAXN];
    char match[MAXN];
    bool isAllMatched(){//是否都出现过 
    	for(int i='A';i<='Z';i++){
    		if(!match[i])return 0;
    	}
    	return 1;
    }
    /**
    * return 是否成功 
    */
    int match2[MAXN];//该原文对应的密文 
    bool getPassword(){
    	int len=strlen(lock);
    	for(int i=0;i<len;i++){
    		int nowLock=lock[i],nowOrig=orignal[i];
    		if(match2[nowOrig]&&!match[nowLock])return 0;
    		if(!match[nowLock])match[nowLock]=nowOrig;
    		if(match[nowLock]!=nowOrig){
    			return 0;
    		}
    		match2[nowOrig]=nowLock;
    	}
    	if(!isAllMatched())return 0;
    	return 1;
    }
    char query[MAXN];
    int main(){
    	cin>>lock>>orignal;
    	cin>>query;
    	bool isOk=getPassword();
    	if(!isOk){
    		printf("Failed
    ");
    		return 0; 
    	}
    	for(int i=0;i<strlen(query);i++){
    		cout<<(char)match[query[i]];
    	}
    	cout<<endl;
    	return 0;
    }

  • 相关阅读:
    hdu 1166 敌军布阵
    UVA 100
    dfs和bfs 变形课
    hdu 1002 A + B Problem II
    连连看 杭电1175
    跳格子 DFS 加 奇偶截枝
    c语言 判断两直线段是否相交
    poj 3067 Japan
    数状数组
    UVA 10881 Piotr's Ants
  • 原文地址:https://www.cnblogs.com/zbsy-wwx/p/11680514.html
Copyright © 2011-2022 走看看