说说下遇到选择题的坑:
坑一:
解析:
8*6的矩阵,从左下角A到右上角B,一共需要走12步,其中5步向上,7步向右,因此总的走法一共有C(12,5)=792种,但题目规定不能经过P,
因此需要减去经过P点的走法。 经过P的路径分为两部分,从A到P,从P到B。 同理,从A到P的走法:C(6,2)=15; 同理,从P到B的走法:C(6,3)=20;
因此从A到B经过P点的走法有15*20=300种, 所以从A到B不经过P点的走法有792-300=492种。
程序代码:
链接:https://www.nowcoder.com/questionTerminal/11531bf1ea1a420abdc6640d23fd13c2
来源:牛客网
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
int g[6][8];
bool vis[6][8];
int ans;
int dir[2][2]={{-1,0},{0,1}};
void dfs(int x,int y)
{
if(x==0&&y==7){
ans++;
return;
}
vis[x][y]=true;
for(int i=0;i<2;i++){
int xx=x+dir[i][0];
int yy=y+dir[i][1];
if(xx>=0&&xx<6&&yy>=0&&yy<8&&!vis[xx][yy]&&!g[xx][yy]){
dfs(xx,yy);
}
}
vis[x][y]=false;
}
int main()
{
memset(g,0,sizeof(g));
memset(vis,false,sizeof(vis));
g[3][4]=1;
ans=0;
dfs(5,0);
cout<<ans<<endl;
return 0;
}
坑二:
解析:AB之间是1种;
选法CDEF四个中选1个有4种选法;CDEF四个中选1个,三个中再选一个有4*3=12种选法;CDEF四个中选1个,三个中再选一个,两个中再选一个有4*3*2=24种
选法;CDEF四个中选1个,三个中再选一个,两个中再选一个,一个中再选一个有4*3*2*1=24种选法;
故总选法为1+4+12+24+24=65
坑三:
解析:
坑四:LRU算法(操作系统虚拟也存储,暂时还没学到) 缓存淘汰算法--LRU算法
坑五:
解析:
坑六:
解析:
从上图可以看出,Linux内核在启动过程中,创建一个名为Kthreadd的内核进程,PID=2,用于创建内核空间的其他进程;
同时创建第一个用户空间Init进程,该进程PID = 1,用于启动一些本地进程,比如Zygote进程,而Zygote进程也是一个专
门用于孵化Java进程的本地进程,上图清晰地描述了整个Android系统的进程模型
坑七:KMP算法是一种改进的字符串匹配算法(笔者之前之了解过Horspool,所以也就GG了)
坑八:(读者在这里只想说,我不是一个合格的Android攻城狮)
Android获取手机屏幕宽度和高度的方法
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metric.widthPixels; // 屏幕宽度(像素)
int height = metric.heightPixels; // 屏幕高度(像素)
float density = metric.density; // 屏幕密度(0.75 / 1.0 / 1.5)
int densityDpi = metric.densityDpi; // 屏幕密度DPI(120 / 160 / 240)
坑九:Android默认字体单位是什么?sp
最后得到的教训是多刷下牛客网的题