一、qsort函数
qsort函数就是快排,可以不用写那么一长串的代码了qvq,要用到stdlib.h库文件
那么具体用法就是
oid qsort(void* base,size_t num,size_t width,int(__cdecl*compare)(const void*,const void*));
当然我们还要用一个比较函数来确定快排的升序,也就是cmp
对于不同的类型,我们有不同的比较方法
int型
int num[100];
int cmp_int(const void* _a , const void* _b) //参数格式固定
{
int* a = (int*)_a; //强制类型转换
int* b = (int*)_b;
return *a - *b;
}
qsort(num,100,sizeof(num[0]),cmp_int);
char型
char word[100];
int cmp_char(const void* _a , const void* _b) //参数格式固定
{
char* a = (char*)_a; //强制类型转换
char* b = (char*)_b;
return *a - *b;
}
qsort(word,100,sizeof(word[0]),cmp_char);
字符串
char word[100][10];
int cmp_string(const void* _a , const void* _b) //参数格式固定
{
char* a = (char*)_a; //强制类型转换
char* b = (char*)_b;
return strcmp(a,b);
}
qsort(word,100,sizeof(word[0]),cmp_string);
二、活字印刷
思路
这个题就是用dfs进行搜索,但是要思考的是有些组合要不能重合,所以就需要我们进行剪枝,我们先将数组进行排序,那么这个时候相等的字符就会放在一起,当我们搜索到第二个的相同的字母的时候,我们就会进行判断,将一些相同的组合剪去
代码实现
int cmp(const void *a,const void *b){ //比较
return *(char*)a-*(char*)b;
}
void dfs(char *tiles,int n,int *dis,int *x)
{
for(int i=0;i<n;i++)
{
if(dis[i]==1)continue; //已经搜索过的就不用搜索了
//同一层的递归中,不能出现相同的组合
if(i>0&&dis[i-1]==0&&tiles[i]==tiles[i-1])continue;
(*x)++;
dis[i]=1;
dfs(tiles,n,dis,x);
dis[i]=0; //回溯
}
}
int numTilePossibilities(char * tiles){
int n=(int)strlen(tiles);
int dis[n];
memset(dis,0,sizeof(dis));
int x=0;
qsort(tiles,n,sizeof(char),cmp);
dfs(tiles,n,dis,&x);
return x;
}
三、cmd窗口
cmd窗口相当于计算机的控制窗口吧,它可以利用命令来实现一些操作
进入
win + r 输入cmd
环境变量
可以将不属于一个磁盘下的文件直接打开,也就是将其记录,记录之后,就算不在同目录下,也能在环境变量中寻找
作用
对于一些常用软件很容易的打开,而不用一个一个输入,显得太过复杂