526 优美的排列

思路就是回溯法,与全排列等同//DFS搜索,每前进一步,必须满足两个条件之一,分情况往下走(全排列问题)

class Solution {    
int count=0;
public int countArrangement(int N) {
    int[] visited=new int[N+1];
        countArrangement(1,N,visited);
            return count;}
public void countArrangement(int step,int N,int[] visited){ 
               if(step==N+1)    {
                       count++;        return;
                           }
             for(int i=1;i<=N;i++)    {        //用过的不能再次使用,避免重复        
             if(visited[i]==0)        { 
                    visited[i]=1;        //限制条件进行,剪枝      
                      if(i%step==0||step%i==0)        {                        countArrangement(step+1,N,visited);      
                         }      
                           visited[i]=0;   
                }   
      }  
    }}
发布了27 篇原创文章 · 获赞 2 · 访问量 741

猜你喜欢

转载自blog.csdn.net/qq_44028171/article/details/104254672