當前位置:首頁 » 編程語言 » c語言單純麻將演算法
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言單純麻將演算法

發布時間: 2022-08-14 20:57:34

c語言簡單演算法介紹

第一步:p=1,第二步:i=2,第三步:應該是p*i賦值給p,所以p*i=1*2 賦值給p
也就是現在的p=1*2,第四步:把i+1賦值給i,此時i=3,第五步:判斷i是否大於五,沒有返回到第三步:把p*i賦值給p,所以p*i=1*2*3 賦值給p
也就是現在的p=1*2*3,第四步:把i+1賦值給i,此時i=4,第五步:判斷i是否大於五,沒有返回到第三步:把p*i賦值給p,所以p*i=1*2*3*4 賦值給p
也就是現在的p=1*2*3*4,第四步:把i+1賦值給i,此時i=5,第五步:判斷i是否大於五,沒有返回到第三步:把p*i賦值給p,所以p*i=1*2*3*4*5 賦值給p
也就是現在的p=1*2*3*4*5,第四步:把i+1賦值給i,此時i=6,第五步:判斷i是否大於五,有,結束。此時p=1*2*3*4*5=5!
這樣i+1就是為了使得後面的乘3,乘4,乘5做准備的!

⑵ c語言常用演算法有哪些

0) 窮舉法
窮舉法簡單粗暴,沒有什麼問題是搞不定的,只要你肯花時間。同時對於小數據量,窮舉法就是最優秀的演算法。就像太祖長拳,簡單,人人都能會,能解決問題,但是與真正的高手過招,就頹了。
1) 貪婪演算法
貪婪演算法可以獲取到問題的局部最優解,不一定能獲取到全局最優解,同時獲取最優解的好壞要看貪婪策略的選擇。特點就是簡單,能獲取到局部最優解。就像打狗棍法,同一套棍法,洪七公和魯有腳的水平就差太多了,因此同樣是貪婪演算法,不同的貪婪策略會導致得到差異非常大的結果。
2) 動態規劃演算法
當最優化問題具有重復子問題和最優子結構的時候,就是動態規劃出場的時候了。動態規劃演算法的核心就是提供了一個memory來緩存重復子問題的結果,避免了遞歸的過程中的大量的重復計算。動態規劃演算法的難點在於怎麼將問題轉化為能夠利用動態規劃演算法來解決。當重復子問題的數目比較小時,動態規劃的效果也會很差。如果問題存在大量的重復子問題的話,那麼動態規劃對於效率的提高是非常恐怖的。就像斗轉星移武功,對手強它也會比較強,對手若,他也會比較弱。
3)分治演算法
分治演算法的邏輯更簡單了,就是一個詞,分而治之。分治演算法就是把一個大的問題分為若干個子問題,然後在子問題繼續向下分,一直到base cases,通過base cases的解決,一步步向上,最終解決最初的大問題。分治演算法是遞歸的典型應用。
4) 回溯演算法
回溯演算法是深度優先策略的典型應用,回溯演算法就是沿著一條路向下走,如果此路不同了,則回溯到上一個
分岔路,在選一條路走,一直這樣遞歸下去,直到遍歷萬所有的路徑。八皇後問題是回溯演算法的一個經典問題,還有一個經典的應用場景就是迷宮問題。
5) 分支限界演算法
回溯演算法是深度優先,那麼分支限界法就是廣度優先的一個經典的例子。回溯法一般來說是遍歷整個解空間,獲取問題的所有解,而分支限界法則是獲取一個解(一般來說要獲取最優解)。

⑶ C語言 洗牌演算法

/*洗牌程序:用任何語言,隨機分配52張撲克牌到52個位置上,每個位置只容許放一張牌
用1-13表示紅心A--K
14-26表示黑桃A,2,3-,Q,K
27-39表示方塊A,2,3-,Q,K
40-52表示黑桃A,2,3-,Q,K
也就是生成1-52不重復的隨機數,放到數組中*/

#include<iomanip.h>
#include<stdlib.h>
#include<time.h>

const int N=52;
static int a[N];

int create(int n)
{
return (1+rand()%52);
}

int main()
{
int i,j;
srand(time(0));
for(i=0;i<N;++i)
{
a[i]=create(N);
for(j=0;j<i;++j)
{
if(a[j]==a[i])
{
a[i]=(a[i]+1)%52;
}
}
cout<<setw(5)<<a[i];
}
cout<<endl;
return 0;
}

⑷ C語言 VC/TC環境下的麻將游戲,最好是長沙麻將代碼,

發送到了

⑸ 用c語言編寫判斷14張麻將牌有沒有暗杠

搞個數組,把相同牌都做個統計,統計結果記錄在數組裡面,看看最後結果有4沒有?

⑹ C語言,撲克牌順子的演算法

rank用來循環檢查A-K的牌有沒有,第一個while循環定位到第一張存在的牌,接著的for循環是檢查連續的有幾張存在的牌。這個張數如果正好等於一手牌的張數,那就是順子。如果不是,比如34578,for得到的值只有3,只有順子才是5

⑺ 求一個關於麻將程序的思路(c語言)

組成胡牌的規則只有兩種,三個相同或者三個排成順序(也就是相鄰)
可能有很多對,那麼分別挑出,這個是必須的,剩下的賦值新的數組中,這是這個新的數組有12個數據
如定義
int guize1(int *b) //這里b有三個數據,三個數相同
{
if(b[0]==b[1]&&b[1]==b[2]&&b[0]==b[1])
return 1;
return 0; //這里加不加else都可以
}
int guize2(int *c) //這里c有三個數據,三個數是順序的
{
int x[3];
int i,j,t;
for(i=0;i<3;i++) //賦值新的數組,因為數組數組改變可以影響到調用它的函數中的數值
x[i]=c[i];
for(i=0;i<3;i++) //x數值排序,隨便選一個,我的可能不對,呵呵
for(j=i+1;j<3;j++)
if(x[i]<x[j])
{
t=x[i];
x[i]=x[j];
x[j]=t;

}
if(x[0]=x[1]-1&&x[1]==x[2]-1) //順序的話返回1
return 1;
return 0;
}
int huipai(int *a) //這里a數組有12個數據
{
//這里就需要枚舉了,沒別的辦法
int i,j,k;
int y[3];

for(i=0;i<10;i++)
for(j=i+1;j<11;j++)
for(k=j+1;k<12;k++) //這三個循環就是所有的情況吧,你想想

{
y[0]=a[i];
y[1]=a[j];
y[2]=a[k];

if(guize1(y)||guize2(y)) //判斷是否構成關系,直接調用子函數即可
return 1;
}

}

主函數中調用子函數的程序
int pai[14] ; //這里放14個數據,初始化自己搞定
int hpai[12];
//排序14個數據自己搞定
int i,j,k;

for(i=0;i<13;i++)
{
if(pai[i]==pai[i+1]) //如果有對

{
k=0;

for(j=0;j<i;j++) //分兩段賦值新的數組

hpai[k++]=pai[j];
for(j=i+2;j<14;j++)
hpai[ k++]=pai[j];
}
if(hupai(hpai))
printf("yes");
else
printf("no");

}

⑻ c語言能設計麻將桌程序嗎

C語言連操作系統都能實現,當然能設計你需要的麻將桌程序了

⑼ 來個c語言演算法大神幫幫忙!

#include<stdio.h>

#include<string.h>

void makeLDR(char DLR[],char LDR[],char LRD[],int n1)

{ int n2;

char *p=strchr(LDR,DLR[0]);

n2=p-LDR; //左子樹節點數

LRD[n1-1]=DLR[0]; //賦後序根節點

if(n2>0)makeLDR(DLR+1,LDR,LRD,n2); //遞歸建立左子樹的後序

if(n1-n2>1)makeLDR(DLR+1+n2,LDR+n2+1,LRD+n2,n1-n2-1); //遞歸建立右子樹的後序

}

int main()

{ int i,n;

char DLR[50],LDR[50],LRD[50],c;

for(i=0,c=' '; c!=' ';) //讀入左子樹序列

scanf("%c%c",&DLR[i++],&c);

for(i=0,c=' '; c!=' ';) //讀入右子樹序列

scanf("%c%c",&LDR[i++],&c);

DLR[n=i]=LDR[i]=LRD[i]='';

makeLDR(DLR,LDR,LRD,n);

printf("後序序列: ");

for(i=0;i<n;i++)

printf("%c%c",LRD[i],i==n-1?' ':',');

return 0;

}

⑽ c語言中什麼是演算法有哪些描述演算法的例子

1、有窮性(有限性)。任何一種提出的解題方法都是在有限的操作步驟內可以完成的。
如果在有限的操作步驟內完不成,得不到結果,這樣的演算法將無限的執行下去,永遠不會停止。除非手動停止。例如操作系統就不具有有窮性,它可以一直運行。
2、一個演算法應該具有以下七個重要的特徵:
1)有窮性(finiteness)
演算法的有窮性是指演算法必須能在執行有限個步驟之後終止
2)確切性(definiteness)
演算法的每一步驟必須有確切的定義;
3)輸入項(input)
一個演算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指演算法本身定出了初始條件;
4)輸出項(output)
一個演算法有一個或多個輸出,以反映對輸入數據加工後的結果.沒有輸出的演算法是毫無意義的;
5)可行性(effectiveness)
演算法中執行的任何計算步都是可以被分解為基本的可執行的操作步,即每個計算步都可以在有限時間內完成;
6)
高效性(high
efficiency)
執行速度快,佔用資源少;
7)
健壯性(robustness)
健壯性又稱魯棒性,是指軟體對於規范要求以外的輸入情況的處理能力。所謂健壯的系統是指對於規范要求以外的輸入能夠判斷出這個輸入不符合規范要求,並能有合理的處理方式。