当前位置: 首页 > news >正文

【3-12 toupper(ch) tolower(ch) 和ASCII码 和全排列】

前言 ASCII中 A 。。。。a;

toupper(ch) tolower(ch) 和ASCII码

#include <bits/stdc++.h>
using namespace std;
//A   ....a
char changeA2toa(char ch)
{
	if(islower(ch)) ch=toupper(ch);
	else if(isupper(ch)) ch=tolower(ch);
	return ch;
}
char change_a2toA(char ch)
{
	if(ch<='z'&&ch>='a')   ch=ch-('a'-'A');
	else	if(ch<='Z'&&ch>='A')   ch=ch+('a'-'A');
	return ch;
}

int main() {
    string n;
    cin>>n;
    for(auto &i:n){
     //i=changeA2toa(i);
     i=change_a2toA(i);
    }
    cout<<n<<'\n';
    cout<<'A'-'a'<<'\n';//-32

    return 0;
}

全排列

  1. next_permutation()函数:这个函数用于生成给定序列的下一个字典序排列。如果当前序列已经是最大的排列,则会将其变为最小的排列。

  2. prev_permutation()函数:这个函数用于生成给定序列的上一个字典序排列。如果当前序列已经是最小的排列,则会将其变为最大的排列。

这两个函数通常用于处理排列和组合问题。

捂脸,这好无聊

AI:

next_permutation()prev_permutation() 函数在处理排列和组合问题时具有很高的价值,主要体现在以下几个方面:

  1. 生成所有排列:这两个函数可以用来生成一个序列的所有可能排列。例如,在解决全排列问题时,可以使用这两个函数来遍历所有可能的排列组合。

  2. 优化算法:在某些情况下,使用 next_permutation()prev_permutation() 可以简化算法的实现。例如,在解决旅行商问题(TSP)等组合优化问题时,可以使用这两个函数来生成和评估不同的解。

  3. 查找特定排列:有时候,我们需要找到满足特定条件的排列。使用 next_permutation()prev_permutation() 可以方便地在排列空间中搜索,直到找到满足条件的排列。

  4. 排列排序:这两个函数可以用于对排列进行排序。例如,可以使用 next_permutation() 将排列按字典序排序,或者使用 prev_permutation() 将排列按逆字典序排序。

  5. 组合数学:在组合数学中,排列和组合是基本概念。next_permutation()prev_permutation() 提供了一种简单的方法来生成和操作这些排列和组合。

总之,next_permutation()prev_permutation() 函数在处理排列和组合问题时非常有用,可以简化算法实现,提高代码可读性和效率。

例子

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
    std::vector<int> arr = {1, 2, 3};

    // 使用 next_permutation
    std::cout << "Next Permutations:" << std::endl;
    do {
        for (int num : arr) {
            std::cout << num << " ";
        }
         cout << std<<'\n';
    } while (std::next_permutation(arr.begin(), arr.end()));

    arr = {3, 2, 1};

    // 使用 prev_permutation
    std::cout << "Prev Permutations:" << std::endl;
    do {
        for (int num : arr) {
            std::cout << num << " ";
        }
        std::cout << std::endl;
    } while (std::prev_permutation(arr.begin(), arr.end()));

    return 0;
}

在这里插入图片描述

相关文章:

  • Android Retrofit 框架适配器模块深入源码分析(五)
  • Vmware Ubuntu 22.04 连接移动硬盘
  • 成为超人 21:超人怎么学?技能的学习,如编程
  • 【从零开始学习计算机科学】编译原理(五)语法制导翻译
  • grunt构建工具:scss转css
  • JavaWeb-servlet6中request和response的使用
  • 第J2周:ResNet50V2算法实现01(Tensorflow硬编码版)
  • ubuntu2404 安装 过程中 手动设置网络
  • 《深度剖析:鸿蒙系统下智能NPC与游戏剧情的深度融合》
  • 今天六大热点爆料
  • Redis 数据结构详解
  • 设计模式-结构型模式-装饰器模式
  • 信奥赛CSP-J复赛集训(模拟算法专题)(10):P2356 弹珠游戏
  • Linux:Ubuntu server 24.02 上搭建 ollama + dify
  • 【Golang】第三弹----运算符
  • 数据类设计_图片类设计之3_半规则图类设计(前端架构基础)
  • 【贪心算法4】
  • AI 变革药物研发:深势科技的云原生实践之路
  • 【每日学点HarmonyOS Next知识】tab拦截、组件方法做参数、自定义组件链式调用、多次观察者监听、横竖屏切换
  • C++20中的`std::endian`:深入理解大端/小端/本地字节序
  • 网站接入服务单位名称/本地免费发布信息网站
  • 部门网站建设内容方案/国际新闻网
  • 如何做公司网站网页/临沂网站建设
  • jsp网站开发存在的问题/佛山seo教程
  • 建筑安全类网站/企业宣传方式有哪些
  • 网站建设与管理总结/百度的营销推广模式