c一些基本演算法和公式

2021-09-18 02:35:31 字數 2533 閱讀 6910

1.蔡勒公式求星期

2.遞迴演算法分組

3.揹包問題

1.用蔡勒公式求星期

蔡勒公式(有多個,這裡就寫我熟悉的乙個):

w=(y+y/4+c/4-2c+26(m+1)/10+d-1)%7;

w:所求星期

y:年份的後兩位數

c:年份的前兩位數

m:月份(幾月)

d:日期(幾號)

注意:

1.當m為1或2月份時,你的把它當作是上一年的13或14月份帶進去計算

2.當求的w小於0時要將w加上7,當w等於0時,為星期天

舉例:黑色星期五

黑色星期五源於西方的宗教信仰與迷信:耶穌**死在星期五,而13是不吉利的數 字。兩者的結合令人相信當天會發生不幸的事情。星期五和數字13都代表著壞運氣,兩個不幸的個體最後結合成超級不幸的一天。所以,不管哪個月的13日又恰逢星期五就叫「黑色星期五」。找出一年內有有哪些天是「黑色星期五」。

**如下

#include int main()

w = (y+y/4+c/4-2*c+26*(m+1)/10+13-1)%7;

if(w<0) w+=7;

if(i==1 || i==2)

y++;

if(w == 5)

}return 0;

}

執行結果:

2.用遞迴演算法求組合

示例:將從6物品中取3個有哪幾種方式

#include #include #include #define n 10000

#define m 3

char group[n][m+1];//注意要留個位置給'\0',不然不好列印,scanf以'\0'列印結束

char group[m];

int l = 0;

void combination(char *str,int len,int m)

l++;

return ;

} for(int i=len; i>=m; i--)

}int main() ;

int len = sizeof(str);

int m = m;

char ch;

combination(str,len,m);

for(int i=0; i執行結果:

3.揹包問題

//有物品標號為1,2,3,4,物品大小為2,3,4,5,物品價值為3,4,5,6的物品

//現在有乙個容量為8的1級包,問這個一級包能最大能裝多少價值的物品

//整體思路

//定義2個1維陣列value[5]=,big=

//定義乙個2維陣列v[i][j]用來表示容量為j的一級包裝的前i個物品的最大價值

//首先初始化陣列為0,當i==0||j==0時,v[0][j]||v[i][0]==0,

//然後選區i=1時j分別選取1,2,3,4,5,6,7,8時的值

/* v[1][1] = 0:第乙個物品的大小為2,而一級包的容量只有1無法裝入,

此時有v[1][1] == v[0][1] == 0,因為第乙個物品無法裝那相當於物品少了一件

*/ /*

v[1][2] = 2:一級包容量加1可以裝入第乙個物品,此時有兩種情況,

第一:我選擇裝,但裝了價值不一定是最大的,

第二,我選擇不裝,去裝留著空間去裝後面價值更大的物品,此時v[1][2]=max(v[0][2],v[0][2-big[1]]+value[1])結果為2

*///.....

/*v[4][8]:第四個商品的大小為5<8,因此v[4][8]=max(v[3,8],v[0][8-big[4]]+value[4])

v[3][8]:第三個物品大小為4<8,因此v[3][8] = max(v[2,8],v[2,8-big-[3]]+value[3])

.......

最後算出v[4][8] = 10;

*/ #include #include #include using namespace std;

int main()

; int big = ;

int bag = 8;

int v[5][9] = ;

for(int i=1; i<5; i++) }

printf("v[4][8] = %d",v[4][8]);

}

執行結果:

一些基本演算法

1.最大奇數約數int fun int x return x int main 2 找出第二大的數,要求用for遍歷一遍const int minnum 0x80000000 int find 2 k int arr,int n else if arr i sec return sec void m...

C語言的一些基本演算法

天文學上的潤年 原理 年數能整除於 4且不能整除 100或者可以整除 400,下面用標準 c語言的兩種實現方式 1 平潤年的判斷 include int main void else return0 2 平潤年的判斷 include int main void else return0 3 素數的判...

C 一些排序演算法

氣泡排序 學語言要花大力氣學資料結構和演算法。using system namespace bubblesorter j public class mainclass bubblesorter sh new bubblesorter sh.sort iarrary for int m 0 m選擇排序...