• 搜索算法


     







    //从1到m中取n个数,允许重复取数 #include <iostream> using namespace std; int n,m, a[10]; void DFS(int k) { if (k==n) { for (int i=0; i<n; i++) cout<<a[i]<<" "; cout<<endl; } else for (int i=1; i<=m; i++) { a[k]=i; DFS(k+1); } } int main() { cin>>m>>n; DFS(0); }

      





    //从1到m中取n个数,允许重复取数 #include <iostream> using namespace std; int n,m, a[10]; void DFS(int k) { if (k==n) { for (int i=0; i<n; i++) cout<<a[i]<<" "; cout<<endl; } else for (int i=1; i<=m; i++) { a[k]=i; DFS(k+1); } } int main() { cin>>m>>n; DFS(0); }

      

    #include <iostream>
    using namespace std;
    int n,m, a[10];
    void  DFS(int k)
    {      if  (k==n) 
            {       for (int i=0; i<n; i++)     cout<<a[i]<<" ";
                    cout<<endl;   
            }
            else 
                    for (int i=1; i<=m; i++) 
    				{  int ok=1;
    				  for(int j=0;j<=k-1;j++)
    				   if(a[j]==i)  ok=0 ;
    					
    				  
                      if(ok)   {a[k]=i;    DFS(k+1);} 
    				}
    }
    int main()
    {        cin>>m>>n;         DFS(0);          }
    
    
    
    
    
    //从1到m中取n个数,不允许重复取数
    
    #include <iostream>
    using namespace std;
    int n,m, a[10];  bool bz[10];
    void  DFS(int k)
    {   if  (k==n) 
        {   for (int i=0; i<n; i++)     cout<<a[i]<<" ";
            cout<<endl;   
        }
        else 
            for (int i=1; i<=m; i++)   
               if ( !bz[i] )
               {  a[k]=i;  bz[i]=true;  DFS(k+1); bz[i]=false;}
    }
    int main()
    {        cin>>m>>n;         DFS(0);          }
    
    
    
    
    //从1到m中取n个数,不允许重复取数,即排列方法2
    #include <iostream>
    using namespace std;
    int n,m, a[10];
    void  DFS(int k)
    {   if  (k==n) 
        {   for (int i=0; i<n; i++)     cout<<a[i]<<" ";
            cout<<endl;   
        }
        else 
            for (int i=k; i<m; i++)   
            {    int t=a[k];a[k]=a[i];a[i]=t;
                 DFS(k+1); 
                 t=a[k];a[k]=a[i];a[i]=t;       }
    }
    int main()
    {   cin>>m>>n;    
        for (int i=0; i<m; i++) a[i]=i+1;
        DFS(0);   return 0;    
    }
    
    
    
    
    
    //从1到m中取n个数,不允许重复取数,即排列方法2
    #include <iostream>
    using namespace std;
    int n,m, a[10];
    void  DFS(int k)
    {   if  (k==n) 
        {   for (int i=0; i<n; i++)     cout<<a[i]<<" ";
            cout<<endl;   
        }
        else 
            for (int i=k; i<m; i++)   
            {    int t=a[k];a[k]=a[i];a[i]=t;
                 DFS(k+1); 
                 t=a[k];a[k]=a[i];a[i]=t;       }
    }
    int main()
    {   cin>>m>>n;    
        
        DFS(0);       
    }
    

      

  • 相关阅读:
    【转】Chrome 控制台不完全指南
    AngularJS 之 Factory vs Service vs Provider【转】
    【转】NuGet.org 无法访问的解决方法
    jquery easyui 1.4.1 验证时tooltip 的位置调整
    jquery easyui 1.4.1 API( CHM版)
    扩展 easyui-tabs 插件 关闭标签页方法
    easyui layout 折叠后显示标题
    easyui 中Datagrid 控件在列较多且无数据时,列显示不全的解决方案
    为easyui datagrid 添加上下方向键移动
    Android布局实现圆角边框
  • 原文地址:https://www.cnblogs.com/wc1903036673/p/3422458.html
Copyright © 2020-2023  润新知