為什麼不讓用iframe….
description
給定n個數 a[0] , a[1] …….. a[n-1], 輸出其全排列。
input
第一行輸入乙個數n,(n<7)
接下來一行輸入n個數。
output
按字典序從小到大輸出全排列
sample input
3 1 2 3
3 1 2 2
sample output
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
1 2 2
2 1 2
2 2 1
#include
#include
int a[1000],bb,c,tl;
intlc[6000][10];
int test(int aaa)
if(flag==c)
return
0; }
for(int i=0;ilc[tl][i]=aaa[i];
tl++;
return1;}
int search(int n,int aa)
printf("\n");}}
else
for(int i=0;iif(a[i]!=-1)
}}int add(int aa)
else
break;
}bb++;
}int main()
int aaaa[10]=;
search(0,aaaa);}}
沒什麼技術又強烈想做這題的我先祭一張圖:
對,然後就寫了一套深度優先搜尋;
解析:這段原始碼在main中讀入所有的值
讀入同時直接用插入排序排好,省去了後續的排序過程.
接著,從0位開始深度優先搜尋.
搜尋第一位,然後判斷,一位不為-1,則把一位標記(占領)為-1,然後1位進行搜尋search(1,aa);
這裡為了方便,就把記錄結果的陣列帶著走了.每次呼叫前,都會把下一位記錄為當前數字.
這樣一直進行,直到search的一引數》=一開始讀入的數字個數c,則輸出,然後返回.返回時,把之前占領的所有格仔回溯,以便下一次搜尋.
但是考慮到重複情況,每次輸出前,用乙個單獨的子程式來判斷是否有重複,如果有則不輸出,沒有則輸出並記錄.
因為題目資料範圍(0
LeetCode 實踐練習16 20
方法 還是先將陣列排個序,然後遍歷陣列,思路跟上一題相似,都是先確定乙個數,然後用兩個指標left和right來滑動尋找另外兩個數,每確定就求三數之和,然後算和給定值的差的絕對值存在newdiff中,比較更新即可。遞迴的思想 不是很了解,需詳細了解 方法 在這裡為了避免重複項,我們使用了stl中的s...
PAT B1048 數字加密 16 20
本題要求實現一種數字加密方法。首先固定乙個加密用正整數a,對任一正整數b,將其每1位數字與a的對應位置上的數字進行以下運算 對奇數字,對應位的數字相加後對13取餘 這裡用j代表10 q代表11 k代表12 對偶數字,用b的數字減去a的數字,若結果為負數,則再加10。這裡令個位為第1位。輸入格式 輸入...
16 20 類的基本與練習。
1.類的定義 class box 定義乙個類相當於創造了乙個新的物品,而我們可以在其基礎上產生單獨的個體,就是物件。2.定義物件與訪問資料成員 include using namespace std class box int main 成員函式定義,包括建構函式 line line void li...