0
点赞
收藏
分享

微信扫一扫

C语言qsort函数、活字印刷、cmd窗口

勇敢的趙迦禾 2023-05-19 阅读 57

一、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

 环境变量

可以将不属于一个磁盘下的文件直接打开,也就是将其记录,记录之后,就算不在同目录下,也能在环境变量中寻找

作用

对于一些常用软件很容易的打开,而不用一个一个输入,显得太过复杂

举报

相关推荐

0 条评论