zoukankan      html  css  js  c++  java
  • POJ1248 Safecracker

    第一次写DFS的程序,虽然是个水题。
    1. 学了memset
    2. 可以存下来A-Z的各个次方的结果
    3. 可以排序优化
    4. 我用了t[0]==0来判断是否有解,也可设个flag
    5. 用了递归,也可用五层循环

    #include <iostream>
    #include <cstring>
    
    using namespace std;
    
    int n;
    int len;
    char s[15];
    int vis[15];
    int t[5];
    int p[5];
    
    void check()
    {
    	for (int i = 0; i < 5; i++)
    	{
    		if (p[i] > t[i])
    		{
    			for (int j = 0; j < 5; j++)
    			{
    				t[j] = p[j];
    			}
    			break;
    		}
    		if (p[i] < t[i])
    		{
    			break;
    		}
    	}
    }
    
    void dfs(int cur)
    {
    	if (cur == 5)
    	{
    		if (n == p[0] - p[1] * p[1] + p[2] * p[2] * p[2] - p[3] * p[3] * p[3] * p[3] + p[4] * p[4] * p[4] * p[4] * p[4] )
    		{
    			check();
    		}
    	}
    	else
    	{
    		for (int i = 0; i < len; i++)
    		{
    			if (!vis[i])
    			{
    				vis[i] = 1;
    				p[cur] = s[i] - 'A' + 1;
    				dfs(cur + 1);
    				vis[i] = 0;
    			}
    		}
    	}
    }
    
    int main()
    {	
    	while (true)
    	{
    		cin >> n >> s;
    		if (n == 0)
    		{
    			return 0;
    		}
    		len = strlen(s);
    		memset(vis, 0, sizeof(vis));
    		memset(t, 0, sizeof(t));
    		memset(p, 0, sizeof(p));
    		dfs(0);
    		if (t[0] == 0)
    		{
    			cout << "no solution" << endl;
    		}
    		else
    		{
    			for (int i = 0; i < 5; i++)
    			{
    				cout << (char) (t[i] + 'A' - 1);
    			}
    			cout << endl;
    		}
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    教你搭建SpringSecurity3框架(附源码)
    浅谈数据库联合查询
  • 原文地址:https://www.cnblogs.com/lautsie/p/3176990.html
Copyright © 2011-2022 走看看