蓝桥A六道试试啊

认真审题啊大哥!!!!

第一道填空 能数就数 仔细一点 发现规律 多数几遍 上下左右换方法检查一下。

从几个几个的开始找规律

奇淫技巧 

1 打表 空间换时间 把要用的结果事先算出来,之后查询直接取这些结果

2 先暴力计算小范围数据的结果 然后找规律。

3 pat 左边p*右边t 

怎么获得每个A左边的P:设定一个数组LeftNumP,从左到右遍历字符串,若当前位i是P,那么leftNumP【i】就等于leftNumP[i-1]+1。如果当前位i不是P,那么leftNumP[i]=leftNumP[i-1]

获得T:直接定义一个变量numT,如果是T,加一,如果是A,直接计算结果ans,ans加上现在leftnumP和numT的乘积。这样遍历完了就能得到ans。



gets(str);//读入字符串 

int len = strlen(str);


排序
#include <algorithm>
using namespace std;
bool cmp(int a,int b){//递减 
return a>b;
}

2.结构体数组

[cpp]  view plain  copy
  1. #include <cstdio>  
  2. #include <algorithm>  
  3. using namespace std;  
  4.    
  5.  struct node{  
  6.     int x,y;  
  7.  }ssd[10];  
  8.  bool cmp(node a,node b){  
  9.     return a.x>b.x;//按x值排序   
  10.  }  
  11.    
  12.  int main(){  
  13.     ssd[0].x = 2;  
  14.     ssd[0].y = 1;//{2,1}  
  15.     ssd[1].x = 1;  
  16.     ssd[1].y = 3;//{1,3}  
  17.     ssd[2].x = 3;  
  18.     ssd[2].y = 1;//{3,1}  
  19.     sort(ssd,ssd+3,cmp);  
  20.     for(int i=0;i<3;i++){  
  21.         printf("%d %d\n",ssd[i].x,ssd[i].y);  
  22.      }  
  23.      return 0;  
  24.  }   
  25.    

  1. bool cmp(Student a,Student b){  
  2.     if(a.score!=b.score) return a.score>b.score;//从大到小排   
  3.     else return strcmp(a.id,b.id)<0;//分数一样的按准考证号排 ,小于号就是字典序小的在前面   
  4. }  


整数转数组
void toarray(int n,int num[]){//将n的每一位存到num数组里
for(int i=0;i<4;i++){
num[i]=n%10;
n/=10;


}



数组转整数
void tonumber(int num[]){
int sum=0;
for(int i=0;i<4;i++){
sum = sum*10+num[i];
}
return sum;
}


求解最大公约数 


int gcd(int a,int b){
return !b?a:gcd(b,a%b);
}


int gcd(int a,int b){
if(b==0) return a;
else return gcd(b,a%b);
}


求解最小公倍数
d最大公约数
a/d*b


分数早上整理
struct Fraction{
	int up,down;//分子,分母 
};

三项规则:

1。 down分母非负, 令分子为负。

2。 分数为0,规定分子为0,分母为1。

3. 分数最简化 没有除一以外的公约数。   约分 :分子分母同除最大公约数d


输出  :

 

struct Fraction{
	int up,down;//分子,分母 
};

void show(Fraction r){
	if(r.down==1) printf("%lld",r.up);//整数
	else if (abs(r.up)>r.down){//假分数
	   printf("%d %d/%d",r.up/r.down,abs(r.up)%r.down,r.down); 
		
	} else{
		printf("%d/%d",r.up,r.down);//真分数 
	}
}





递归 要记得回溯!!!还原
找相似性 递归边界 出口
技巧:填参数 注用每次调用的层次 参数不同。


n个球 任意取出m个  分两种情况 一种 :我取一号球 那剩下的球中取m-1个

                                                             我不取                                 m



求反串 递归
杨辉三角  
m个A n个B 组成多少排列 
第一个位置是A 剩下m-1A n个B 第一个位置是B m A n-1B


整数划分
分割成小部分 和一个大部分 


某财务漏了几笔








浮点数的应用


啤酒与饮料
0.2+0.1!=0.3
因为计算机是二进制表示 
扩大十倍 


比酒量


改写成整数 1/a+1/b=1 通分 


浮点数不能精确比较


定义有理数结构体 分子 分母 加减乘除


有效数字 任意精度 除不尽 上下文 mathcontext 怎么舍入 四舍五入 


车轮轨迹




整数的性质


素数


第100002个素数


!!!!!筛法 把2的倍数筛掉 把3的倍数筛掉


!!!a的n次幂 对P取模 快速幂


(a%p + b%p)%p =(a+b)%p   (a*b)%p = (a%p*b%p)%p




不定方程
方程个数和未知数要一样
一次不定方程 枚举 x<100 y<100 if满足什么
ax+by=c
ax = c-by  求特解 能被a整除的c-by 求出x和y


特解x0 y0 
x=x+bt y= y-at
t= 0 1 2 3





买不到的数目
ax+by=c xy整数 ab互质




花朵数
a^21+b^21+c^21+……=abcd……


先算好0-9的21次方






六角幻方



博弈问题


!!!买不到的数目 


!!!高僧斗法 博弈问题 对方必输的解法
尼姆游戏 若干堆硬币,二人轮流取 把硬币变成两堆相等的一对就输了
没有平局  二进制规律 3 11 
                     4 100 
                     5 101 列向 1的数目为偶数 对方必输


!!转换二进制?  任何无偏二人游戏转成尼姆游戏。


把小和尚位置间的空隙:尼姆堆 偶数两两组合 奇数 在最高阶补一个




概率问题求解


概率模拟
三十个人的班级生日 0-365随机产生数字 有没有碰撞
int N =1000*100
int n 碰撞次数
int x[365]
p = math.random()*365 循环三十次 产生三十次随机数 碰撞了就出
if x[i]=1 break; 


每次概率不一样 估算就行 


四张扑克牌 1-10 +-*/ 24点


接收四个整数 产生随机的组合方式  计算 等于24 break 
中缀后缀表达式 看见数字压栈 逆波兰表达式 
栈存数字 




博弈问题


盒子取球 1 3 7 8    f(局面=当前所剩球的数目)
if >1&&f(n-1) 对方输了 我就赢了
if >3&&f(n-1) 对方输了 我就赢了






井字棋 三个棋子在一条直线
for对所有可走的位置
试---局面y
结果t =fy
if t=负 胜
  t=平 tag=平




二叉树


递归定义法
int v
bitree l;
bitree r;




红黑树
每个结点要么红的要么黑的
根节点黑的
每个叶节点黑的
每一个结点红的 他的儿子都是黑的


1 插入根节点
2 插入结点
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值