HDU 1016 java 已Ac
原題連結 遞迴的經典題型
package cn.hncu.search;
import java.util.Scanner;
public class searchdfs {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int k=0;
while(sc.hasNext()){
int n=sc.nextInt();
int a[]=new int[n];//對數字開陣列
int color[]=new int[n];//對顏色
int parents[]=new int[n];//對父節點
k++;
System.out.println("Case "+k+":");//AC題目需要
//初始化各個結點的值,顏色,父節點
for(int i=0;i<n;i++){
a[i]=i+1;
color[i]=-1;
parents[i]=-1;
}
int start=0;//第一個數
int count=0;//用於計次數,達到n 次就可以推出遞迴(鴻溝)
dfs(a,color,parents,start,count);//把引數傳過去,進行深搜
System.out.println();//AC題目需要
}
}
private static void dfs(int[] a, int[] color, int[] parents, int u,int count) {
color[u]=1;//第一個數進來,標記為訪問(1為訪問,-1為沒有訪問過)
count++;//進一次,加一次
//遞迴鴻溝
if(count==a.length&&isPrime(a[u]+a[0])){//當次數達到n次且是素數時
parents[0]=u;//因為是一個環,所以最後一個結點由第一個記錄
print(a,parents);//輸出要求
return;//停止遞迴
}
for(int i=0;i<a.length;i++){//當沒有滿足退出的要求時候,進行下一個搜尋
if(color[i]==-1 &&isPrime( a[u]+ a[i])){//沒有被訪問且相加的值為素數時候進去下一個搜所
parents[i]=u;//記錄進去點的父節點
dfs(a,color,parents,i,count);//開始搜所
color[i]=-1;//當搜尋不滿足要求時候,需要還原現場
parents[i]=-1;//還原現場
}
}
}
private static void print(int[] a, int[] parents) {//輸出
int index[]=new int[a.length];//由於該點記錄的父節點的是上一個節點的值
int p=0;
for(int i=index.length-1;i>=0;i--){//將父節點的數字從後面往前面存起來,從0開始
index[i]=parents[p];
p=parents[p];//以後一個節點值獲得前一個的值
}
int j;
for(j=0;j<index.length;j++){
if(j<index.length-1){
System.out.print( a[index[j]]+" ");//按要求輸出
}else{
System.out.println(a[index[j]]);}
}
}
// 判斷素數
private static boolean isPrime(int n) {
if(n==2){
return true;
}
for(int i=2;i*i<=n;i++){
if(n%i==0){
return false;
}
}
return true;
}
}
點選開啟連結
相關文章
- 【Ac自動機】hdu 5880 Family ViewView
- hdu 1241 Oil Deposits 深搜 Ac
- hdu2243 ac自動機+矩陣連乘矩陣
- 1016 部分A+B (15 分)JavaJava
- csdn hud 2094 拓撲排序 已經AC排序
- 航電 2212 java ACJava
- 1016 部分A+B (15分)【java題解】Java
- hdu 1277 AC自動機入門(指標版和陣列版)指標陣列
- HDU 1236 排名(Java)Java
- hdu1025javaJava
- hdu1069javaJava
- hdu2896 AC自動機-標記哪些模式串在目標串中出現過模式
- CF1016D
- hdu2222 AC自動機-給定串中出現了幾個模式串模式
- hdu2011javaJava
- hdu 2097 Java Sky數Java
- hdu 2072 Java 單詞數(超級坑) HDU 2072Java
- hdu3065 AC自動機-每個標準串在模式串中出現的次數模式
- hdu5384 AC自動機模板題,統計模式串在給定串中出現的個數模式
- ZOJ Problem Set - 1016 ParencodingsEncoding
- HydroOJ 從入門到入土(20)已透過的題目顯示 AC 程式碼
- hdu 2085 java 核反應堆Java
- Codeforces 1016C Vasya And The MushroomsOOM
- POJ——1016Parencodings(模擬)Encoding
- hdu 1326 java (理解起來很簡單)Java
- hdu 1753 Java 高精度處理 大明A+BJava
- 新版ac_signature
- Java 11已經發布Java
- “Java已死”的簡史Java
- hdu 1237 Java 簡單計算器Java
- 傑裡之AC695AC696 的定時斷電記憶【篇】
- Oracle ASM Cluster File Systems (ACOracleASM
- noi.ac 字串游戲字串
- [複習] AC自動機
- AC自動機 提高篇
- ac79啟動流程
- 一個人的旅行_hdu_2066(dijkstra).javaJava
- Java是不是已經飽和了?Java