• [DFS]特殊的质数肋骨


    特殊的质数肋骨

    时间限制:1000MS————内存限制:256000KB

    题目描述

    农民约翰母牛总是产生最好的肋骨。
    你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们。
    农民约翰确定他卖给买方的是真正的质数肋骨,是因为从右边开始切下肋骨,每次还剩下的肋骨上的数字都组成一个质数,举例来说:
    7 3 3 1
    全部肋骨上的数字 7331是质数;三根肋骨 733是质数;二根肋骨 73 是质数;当然,最后一根肋骨 7 也是质数。
    7331 被叫做长度 4 的特殊质数。
    写一个程序对给定的肋骨的数目 N (1<=N<=8),求出所有的特殊质数。
    数字1不被看作一个质数。

    输入

    单独的一行包含N。

    输出

    按顺序输出长度为 N 的特殊质数,每行一个。

    输入样例
    4

    输出样例
    2333
    2339
    2393
    2399
    2939
    3119
    3137
    3733
    3739
    3793
    3797
    5939
    7193
    7331
    7333
    7393

    题目解析
    就直接搜索,再判断是不是质数。不是就试下一个数。

    AC完整程序

    #include<stdio.h> 
    #include<iostream>
    using namespace std;
    const int a[6]={1,2,3,5,7,9};
    int l;
    bool su(int);
    void dfs(int,int);
    int main(){
    	scanf("%d",&l);
    	dfs(1,0);
    }
    bool su(int n){
    	if(n<2)return 0;
    	if(n==2)return 1;
    	for(int i=2;i*i<=n;i++){
    		if(n%i==0)return 0;
    	}
    	return 1;
    }
    void dfs(int dep,int sum){
    	if(dep>l){
    		printf("%d
    ",sum);
    		return ;
    	}
    	else{
    	 	for(int i=0;i<6;i++){
    	 		if(su(sum*10+a[i])){
    	 			dfs(dep+1,sum*10+a[i]);
    	 		}
    	 	}
    	}
    }
    
  • 相关阅读:
    173. Binary Search Tree Iterator
    199. Binary Tree Right Side View
    230. Kth Smallest Element in a BST
    236. Lowest Common Ancestor of a Binary Tree
    337. House Robber III
    449. Serialize and Deserialize BST
    508. Most Frequent Subtree Sum
    513. Find Bottom Left Tree Value
    129. Sum Root to Leaf Numbers
    652. Find Duplicate Subtrees
  • 原文地址:https://www.cnblogs.com/luojunhang/p/12300177.html
Copyright © 2020-2023  润新知