zoukankan      html  css  js  c++  java
  • 搜索算法

     







    //从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);       
    }
    

      

  • 相关阅读:
    大厂Redis高并发场景设计,面试问的都在这!
    POJ1006——中国剩余定理
    HDU3501——欧拉函数裸题
    堆-动态的排序(洛谷1801-黑匣子)
    图中欧拉回路数量
    ip地址
    网络通信概述
    网络通信概述
    软件安装与卸载
    软件安装与卸载
  • 原文地址:https://www.cnblogs.com/wc1903036673/p/3422458.html
Copyright © 2011-2022 走看看