當前位置:首頁 » 操作系統 » mian演算法

mian演算法

發布時間: 2023-07-01 17:42:30

『壹』 數獨演算法

給你數獨計算器:
http://blog.xunlei.com/web/category.html?uin=mianmiany1978&category_id=143
數獨游戲:
http://blog.xunlei.com/web/category.html?uin=mianmiany1978&category_id=174
數獨演算法:
http://www.puzzle8.com/suku/news.asp
數獨快速入門(上篇)
數獨快速入門(中篇)
數獨快速入門(下篇)
唯一解法
唯一候選數法
隱性三鏈數刪減法
隱性數對刪減法
三鏈列刪減法
區塊刪減法
矩形頂點刪減法
關鍵數刪減法

補充:
合格的數獨是只有唯一解。
而數獨有難易度的分類,找一份報紙注意刊登的數獨謎題是1星,還是5星。
在網路上,更分成容易題、進階題、難題、極難題、超難題....
一般都是依據需要運用的技巧,而技巧是區分難易的。

數獨不用猜測,解題全部是運用邏輯推理。
數獨不用電腦程序分析,就可以解的題目是直觀法數獨題。
而超難題是需要電腦分析,及把全盤標示可選數,那是可選數謎題。
沒有所謂解題通則。

1.直觀解(一般報紙、書籍)
直觀法技巧
直觀法技巧 01 (容易級) 唯一解
直觀法技巧 02 (容易級) 基本摒除
直觀法技巧 03 (進階級) 宮對行列摒除
直觀法技巧 04 (進階級) 行列對宮摒除
直觀法技巧 05 (進階級) 群組解法
直觀法技巧 06 (困難級) X-Wing摒除法01
直觀法技巧 06 (困難級) X-Wing摒除法02
直觀法技巧 07 (困難級) 數偶摒除法

http://hi..com/kiwy07/blog/item/181fc482a153f3bd6c8119ab.html

2.可選數(以程序自動生成可選數)

Last value in block, row or column
Hidden Single in block
Hidden Single in row or column
Direct Pointing
Direct Claiming
Direct Hidden Pair
Naked Single
Direct Hidden Triplet
Pointing
Claiming
Naked Pair, X-Wing, Hidden Pair
Naked Triplet, Swordfish, Hidden Triplet
XY-Wing, XYZ-Wing
Unique rectangles and loops
Naked Quad, Jellyfish, Hidden Quad
Bivalue Universal Graves
Aligned Pair Exclusion
Bidirectioal X-Cycles and Y-Cycles
Forcing X-Chains
Forcing Chains, Bidirectional Cycles
Nishio
Cell/Region Forcing Chains
Dynamic Forcing Chains

http://diuf.unifr.ch/people/juillera/Sudoku/FAQ.html

通則無法解的題
直觀難題
006589307
030602008
809703500
000891403
394265871
180374000
003026785
000458030
008037200
可選數極難題
970000000
003927000
008410709
300700400
060050070
007040003
105074900
000068507
786000042
不要把謎題解一次列出,而是找出下一步,及他的邏輯推理方法。
不要用猜測。

『貳』 c語言 每個糖果1元,三張糖果紙換一個糖果,問N元最多能買幾個糖果

一、演算法設計:

1、首先N元可以買N個糖果,同時產生N個糖紙;

2、然後每三張糖紙可以換一個糖果,同時產生一張新的糖紙;

3、以此循環下去,直到糖紙數不足3張時(不考慮可以借糖果),結束程序。

二、參考代碼:

#include<stdio.h>
intmain()
{
intN,tg,tz;
scanf("%d",&N);//輸入N值。
tg=tz=N;//初始糖果和糖紙數都是N個。
while(tz>=3)//糖紙數超過三張,還可以繼續換糖果,執行循環。
{
intt=tz/3;//t用來存儲當前糖紙可以換的糖果數。
tg+=t;//累加到糖果總數上。
tz=tz%3+t;//剩餘的糖紙數。
}
printf("%d元共可買%d個糖果 ",N,tg);//輸出結果。
return0;
}

『叄』 遞歸演算法怎麼理解

問題一:遞歸演算法還不是很理解!!高手教一教! 遞歸(recursion)是指把一個大的問題轉化為同樣形式但小一些的問題加以解決的方法。C語言允許一個函數調用它本身,這就是遞歸調用。即在調用一個函數的過程中又直接或間接地調用函數本身。不加控制的遞歸都是無終止的自身調用,程序中是絕對不應該出現這種情況的。為了防止無休止的遞歸,程序中應控制遞歸的次數,在某條件成立時進行遞歸,條件不成立不進行遞歸調用。並且在遞歸的調用過程中,不斷改變遞歸的條件,以使遞歸條件不再成立。
同一問題可能既可以用遞歸演算法解決,也可以用非遞歸演算法解決,遞歸往往演算法設計簡單,出奇制勝,而普通演算法(通常用循環解決)往往設計稍復雜。但執行效率遞歸演算法遜於循環演算法。遞歸反復調用自己,需要佔用較多內存和計算機時間。但有一些問題只有用遞歸方法才能解決,如著名的漢諾塔問題。
遞歸程序設計的關鍵就是考慮問題的兩種情況,一種是普遍情況即函數值等於把問題遞推一步後的本函數的調用,一種是極端或端點情況,此時函數值有確定的一個值而無須再調用本函數。遞歸的過程就是從普遍情況逐步過渡到端點情況的過程。
例子:
5個坐在一起論年齡,問第五個人多少歲?他說比第四個人大兩歲。問第四個人多少歲,他說比第三個人大兩歲。問第三個人多少歲,他說比第二個人大兩歲。問第二個人多少歲,他說比第一個人大兩歲。問第一個人多少歲,他說10歲。請問第五個人幾歲?
int age(int n)
{ int x;
if(n>1) x=age(n-1)+2;
else if(n==1) x=10;
return x;
}
void main( )
{ printf(%d,age(5));}

問題二:什麼是遞歸演算法 遞歸演算法就是一個函數通過不斷對自己的調用而求得最終結果滾咐的一種思維巧妙但是開銷很大的演算法。
比如:
漢諾塔的遞歸演算法:
void move(char x,char y){
printf(%c-->%c\n,x,y);
}
void hanoi(int n,char one,char two,char three){
/*將n個盤從one座藉助two座,移到three座*/
if(n==1) move(one,three);
else{
hanoi(n-1,one,three,two);
move(one,three);
hanoi(n-1,two,one,three);
}
}
main(){
int n;
printf(input the number of diskes:);
scanf(%d,&n);
printf(The step to moving %3d diskes:\n,n);
hanoi(n,'A','B','C');
}
我說下遞歸的理解方法
首先:對於遞歸這一類函數,你不要糾結於他是干什麼的,只要知道他的一個模糊功能是什麼就行,等於把他想像成一個能實現某項功能的黑盒子,而不去管它的內部操作先,好,我們來看下漢諾塔是怎麼樣解決的
首先按我上面說的斗備肆把遞歸函數想像成某個功能的黑盒子,void hanoi(int n,char one,char two,char three); 這個遞歸函數的功能是:能將n個由小到大放置的小長方形從one 位置,經過two位置 移動到three位置。那麼你的主程序要解決的空轎問題是要將m個的漢諾塊由A藉助B移動到C,根據我們上面說的漢諾塔的功能,我相信傻子也知道在主函數中寫道:hanoi(m,A,B,C)就能實現將m個塊由A藉助B碼放到C,對吧?所以,mian函數裡面有hanoi(m,'A','C','B');這個調用。
接下來我們看看要實現hannoi的這個功能,hannoi函數應該幹些什麼?
在hannoi函數里有這么三行
hanoi(n-1,one,three,two);
move(one,three);
hanoi(n-1,two,one,three);
同樣以黑盒子的思想看待他,要想把n個塊由A經過B搬到C去,是不是可以分為上面三步呢?
這三部是:第一步將除了最後最長的那一塊以外的n-1塊由one位置經由three搬到two 也就是從A由C搬到B 然後把最下面最長那一塊用move函數把他從A直接搬到C 完事後 第三步再次將剛剛的n-1塊藉助hanno處函數的功能從B由A搬回到C 這樣的三步實習了n塊由A經過B到C這樣一個功能,同樣你不用糾結於hanoi函數到底如何實現這個功能的,只要知道他有這么一個神奇的功能就行
最後:遞歸都有收尾的時候對吧,收尾就是當只有一塊的時候漢諾塔怎麼個玩法呢?很簡單吧,直接把那一塊有Amove到C我們就完成了,所以hanoni這個函數最後還要加上 if(n==1)move(one,three);(當只有一塊時,直接有Amove到C位置就行)這么一個條件就能實現hanoin函數n>=1時......>>

問題三:怎麼更好地終極理解遞歸演算法 遞歸的基本思想是把規模大的問題轉化為規模小的相似的子問題來解決。在函數實現時,因為解決大問題的方法和解決小問題的方法往往是同一個方法,所以就產生了函數調用它自身的情況。另外這個解決問題的函數必須有明顯的結束條件,這樣就不會產生無限遞歸的情況了。
需注意的是,規模大轉化為規模小是核心思想,但遞歸並非是只做這步轉化,而是把規模大的問題分解為規模小的子問題和可以在子問題解決的基礎上剩餘的可以自行解決的部分。而後者就是歸的精髓所在,是在實際解決問題的過程。

問題四:怎樣才能深刻理解遞歸和回溯? 遞歸的精華就在於大問題的分解,要學會宏觀的去看問題,如果這個大問題可分解為若干個性質相同的規模更小的問題,那麼我們只要不斷地去做分解,當這些小問題分解到我們能夠輕易解決的時候,大問題也就能迎刃而解了。如果你能獨立寫完遞歸創建二叉樹,前序、中序、後序遞歸遍歷以及遞歸計算二叉樹的最大深度,遞歸就基本能掌握了。

回溯本人用得很少,僅限於八皇後問題,所以幫不上啥了。

問題五:二叉樹的遞歸演算法到底該怎麼理解 這不就是在二叉排序樹上的遞歸查找,看程序
tree& find(const T& d, tree& t){
if(t==NULL) return t;如果二叉樹為空則返回空,查找失敗
if(t->data==d) return t;否則,如果當前根結點關鍵碼為d,則查找成功,當前根結點為待查找結點
if(d>t->data) return find(d, t->right);如果比根的關鍵碼大就遞歸查找右子樹
return find(d, t->left);如果比根的關鍵碼小就遞歸查找左子樹
}
二叉樹的遞歸定義的含義就是非空二叉樹,除了根以外,左右子樹都是二叉樹(可以為空)

問題六:怎麼理解遞歸演算法?我看了代碼但還是不理解? 函數自己調用自己就是遞歸啊。
從前有座山,山裡有座廟,廟里有個老和尚給小和尚講故事。講的內容是:
從前有座山,山裡有座廟,廟里有個老和尚給小和尚講故事,講
從前有座山,山裡有座廟,廟里有個老和尚給小和尚講故事……
跟循環差不多。而且浪費棧空間,效率不高。能夠轉化為循環最好。

問題七:數據結構中的二叉樹中的遞歸怎麼理解? 以中序遍歷為例,思想是:
若二叉樹為空,則空操作;否則
(1)中序遍歷左子樹
(中序遍歷左子樹時也是這三步)
(2)訪問根結點
(3)中序遍歷右子樹
(當然右子樹也是重復著三步)
示例代碼:
int InOrderTraverse(BiTree T)
{
if(T)
{
InOrderTraverse(T->lchild);
printf(%d\t,T->data);
InOrderTraverse(T->rchild);
}
return OK;
}

問題八:java遞歸演算法,怎麼理解??? n! = (n-1)*n!
簡單理解,就是目前的所有任務,等於前面所有的任務+現在的任務。
比如你求 1。。。100的加法總和
實際上是 1... 99 的加法總和 + 100 就是了。
這就是遞歸的來源。
你只需要計算你前一步的任務,然後加上自己,就OK了。
前一步,在再次調用前前一步......

問題九:新手一個,有什麼更好理解遞歸的方法嗎?(c++) 遞歸的話就是重復調用方法直到滿足條件為止就停止這個方法,就跟循環類似,不過循環使用的方法一邊比較簡單

問題十:遞歸的原理解釋 遞歸的底層實現其實是一個棧.棧的特點是後進先出,也就是最後進入棧的事件是最先被處理的.
遞歸就是這樣運作.比如計算階乘函數F(n)=n!=n*F(n-1)=....
寫成遞歸,我用java
public static long F(long num){
if(num

熱點內容
安卓和unity哪個累 發布:2025-03-19 14:31:39 瀏覽:677
雅閣電動座椅怎麼配置 發布:2025-03-19 14:28:30 瀏覽:635
探月編程課 發布:2025-03-19 14:22:34 瀏覽:311
62腳本怎麼安裝 發布:2025-03-19 14:04:25 瀏覽:573
php傳值給html 發布:2025-03-19 14:02:05 瀏覽:608
windowsmedia緩存 發布:2025-03-19 14:02:00 瀏覽:765
百變圖標安卓為什麼有2個應用 發布:2025-03-19 14:00:28 瀏覽:52
數控機床編程指令 發布:2025-03-19 13:52:31 瀏覽:369
c語言與程序設計大學教程 發布:2025-03-19 13:15:25 瀏覽:846
雲時客演算法 發布:2025-03-19 13:07:37 瀏覽:675