当前位置:编程学习 > JAVA >>

取字母组串

print?/*  取字母组成串 
 * A B C D中取5次,每个字母都可以重复取出,形成一个串。 
现在要求,串中A出现的次数必须为偶数(0次也算偶数)。 
求可以形成多少种可能的串。 
 */   
public class 取字母组串 {   
    // 取n次,A出现奇数次    
    public static int g(int n) {   
        if (n == 1)   
            return 1;   
        return 3 * g(n - 1) + f(n - 1);   
    }   
    // 取n次,A出现偶次    
    public static int f(int n) {   
        if (n == 1)   
            return 3;   
        return 3 * f(n - 1) + g(n - 1);   
    }   
    public static void main(String[] args) {   
        System.out.println("kinds:"+f(5));   
    }   
}  

/*  取字母组成串
 * A B C D中取5次,每个字母都可以重复取出,形成一个串。
现在要求,串中A出现的次数必须为偶数(0次也算偶数)。
求可以形成多少种可能的串。
 */ 
public class 取字母组串 { 
    // 取n次,A出现奇数次 
    public static int g(int n) { 
        if (n == 1) 
            return 1; 
        return 3 * g(n - 1) + f(n - 1); 
    } 
    // 取n次,A出现偶次 
    public static int f(int n) { 
        if (n == 1) 
            return 3; 
        return 3 * f(n - 1) + g(n - 1); 
    } 
    public static void main(String[] args) { 
        System.out.println("kinds:"+f(5)); 
    } 
} [java]  方法二: 
public class 取字母组串  
{   
    public static int b[]=new int[5];   
    public static int kinds=0; 
    public static void main(String[] args)   
    {   
        dfs(0,5);   
        System.out.println("kinds:"+kinds);   
    }   
    static void dfs(int m,int n)   
    {   
        if(m==n)   
        {   
            if(is_even())//如果出现偶数次    
            {   
                kinds++;   
            }  
            return; 
        }   
        else   
        {   
            for(int i=0;i<n-1;i++)   
            {   
                b[m]=i; 
     
                dfs(m+1,n);  
            }   
        }   
    }   
    static boolean is_even()   
    {   
        int sum=0;   
        for(int i=0;i<b.length;i++)   
        {   
            if(b[i]==0) sum++;   
        }   
        if(sum%2==0) return true;   
        return false;   
    }   

方法二:
public class 取字母组串

 public static int b[]=new int[5]; 
 public static int kinds=0;
    public static void main(String[] args) 
    { 
        dfs(0,5); 
        System.out.println("kinds:"+kinds); 
    } 
    static void dfs(int m,int n) 
    { 
        if(m==n) 
        { 
            if(is_even())//如果出现偶数次 
            { 
                kinds++; 
            }
            return;
        } 
        else 
        { 
            for(int i=0;i<n-1;i++) 
            { 
                b[m]=i;
   
                dfs(m+1,n);
            } 
        } 
    } 
    static boolean is_even() 
    { 
        int sum=0; 
        for(int i=0;i<b.length;i++) 
        { 
     &nb

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,