C语言基础
一些C语言基础知识
乖乖我左边的房子在动
喜静
展开
-
巴什博弈(先手/后手必胜)
有一堆总数为n的物品,2名玩家轮流从中拿取物品。每次至少拿1件,至多拿m件,不能不拿,最终将物品拿完者获胜。在先取完者胜的巴什博弈中,若n可被m+1整除,则后手方必胜(不管先手取了多少,后手只要取到m+1的倍数),否则先手方必胜。...原创 2021-12-12 10:55:46 · 6469 阅读 · 0 评论 -
单调栈的理解
单调递增栈:单调递增栈就是从栈底到栈顶数据是从大到小 单调递减栈:单调递减栈就是从栈底到栈顶数据是从小到大 模拟实现单调递增栈的伪代码:stack<int> st;//此处一般需要给数组最后添加结束标志符for (遍历这个数组){ if (栈空 || 栈顶元素大于等于当前比较元素) { 入栈; } else { while (栈不为空 && 栈顶元素小于当前元素) { 栈顶元素出栈; 更新结果; } 当前数据..原创 2021-12-12 10:54:36 · 165 阅读 · 0 评论 -
C语言求最大公约数
int gcd(int a,int b){ return b==0?a:gcd(b,a%b);}//返回值即为a与b的最大公约数原创 2021-12-12 10:52:42 · 433 阅读 · 0 评论 -
C语言将十进制转化为其他进制
将十进制转化为c进制 void change(int a,int c){ int temp=0; if(a==0); else{ temp=a%c; a/=c; change(a,c); printf("%d",temp); } }原创 2021-12-11 09:53:53 · 413 阅读 · 0 评论 -
C语言判断素数的方法
0和1都不是素数1.最朴素的判断方法for(j=2;j<=n;j++){ sign=1; for(i=2;i*i<=j;i++) if(j%i==0){ sign=0; break; } if(sign==1);//sign=1表示j是素数}2.素数筛a[0]=a[1]=1;//1表示不是素数,0表示是素数//素数筛,素数的倍数都不是素数for(int i=2;i<105000;i++){//(1原创 2021-12-11 09:49:34 · 527 阅读 · 0 评论 -
用C语言实现各种排序算法
1.冒泡排序void bubble(Item a[],int n){ for(int i=n;i>1;i--) for(int j=0;j<i-1;j++) if(a[j]>a[j+1]) swap(a[j],a[j+1]);}改进的冒泡排序:void bubble_Modified(Item a[],int n){ int flag=1; for(int i=n;i>1&&flag;i--){ flag=0; f原创 2021-12-10 16:06:52 · 181 阅读 · 0 评论