21
已解决
吴庞茂旭
资深光能
资深光能
1.rand()
rand() 生成随机数种子
包含头文件:
#include <cstdlib>
形式:
int __cdecl rand(void);
常用用法:
1. (l,r) rand()%(r-l+1)+l
2. [l,r) rand()%(r-l)+(l+1)
3. (l,r] rand()%(r-l)+l
4. [l,r] rand()%(r-l-1)+(l+1)
2.srand()
srand(time(NULL)) 根据时间戳产生随机数
包含头文件:
#include <ctime>
形式:
void __cdecl srand(unsigned int _Seed);
常用用法:
srand(time(NULL))
吴庞茂旭在2021-06-25 16:27:35追加了内容
更新rand
rand() 生成随机数种子
包含头文件:
#include <cstdlib>
形式:
int __cdecl rand(void);
常用用法:
l--左端点 r--右端点
( 或 ) 包括后面或前面的数
[ 或 ] 不包括后面或前面的数
如(l,r] 包括l但不包括r的区间
1. (l,r) rand()%(r-l+1)+l
2. [l,r) rand()%(r-l)+(l+1)
3. (l,r] rand()%(r-l)+l
4. [l,r] rand()%(r-l-1)+(l+1)
吴庞茂旭在2021-07-04 13:14:22追加了内容
谢谢老师对我的支持!
吴庞茂旭在2021-07-04 13:14:55追加了内容
system() 操作符指令
包含头文件:
#include <cstdlib>
形式:
int __cdecl system(const char *_Command);
常用用法:
1. 清屏:system("cls");
2. 改变颜色:system("color 后景色前景色");
16进制颜色对照谱:
0=黑色,1=蓝色,2=绿色,3=湖蓝色,4=红色,5=紫色,6=黄色,7=白色,8=灰色,9=淡蓝色,A=淡绿色 B=浅绿色,C=淡红色,D=淡紫色,E=淡黄色,F=亮白色
3. 改变标题:system("title 标题");
4. 子文件图谱:system("tree");
5. 运行程序:system("程序地址");
6. 打开python编译器(有点奇怪但的确可以):system("python");
7. 暂停程序:system("pause");
8. 附录(大小写不需区分):
ASSOC 显示或修改文件扩展名关联。
ATTRIB 显示或更改文件属性。
BREAK 设置或清除扩展式 CTRL+C 检查。
BCDEDIT 设置启动数据库中的属性以控制启动加载。
CACLS 显示或修改文件的访问控制列表(ACL)。
CALL 从另一个批处理程序调用这一个。
CD 显示当前目录的名称或将其更改。
CHCP 显示或设置活动代码页数。
CHDIR 显示当前目录的名称或将其更改。
CHKDSK 检查磁盘并显示状态报告。
CHKNTFS 显示或修改启动时间磁盘检查。
CLS 清除屏幕。
CMD 打开另一个 Windows 命令解释程序窗口。
COLOR 设置默认控制台前景和背景颜色。
COMP 比较两个或两套文件的内容。
COMPACT 显示或更改 NTFS 分区上文件的压缩。
CONVERT 将 FAT 卷转换成 NTFS。你不能转换当前驱动器。
COPY 将至少一个文件复制到另一个位置。
DATE 显示或设置日期。
DEL 删除至少一个文件。
DIR 显示一个目录中的文件和子目录。
DISKPART 显示或配置磁盘分区属性。
DOSKEY 编辑命令行、撤回 Windows 命令并创建宏。
DRIVERQUERY 显示当前设备驱动程序状态和属性。
ECHO 显示消息,或将命令回显打开或关闭。
ENDLOCAL 结束批文件中环境更改的本地化。
ERASE 删除一个或多个文件。
EXIT 退出 CMD.EXE 程序(命令解释程序)。
FC 比较两个文件或两个文件集并显示它们之间的不同。
FIND 在一个或多个文件中搜索一个文本字符串。
FINDSTR 在多个文件中搜索字符串。
FOR 为一组文件中的每个文件运行一个指定的命令。
FORMAT 格式化磁盘,以便用于 Windows。
FSUTIL 显示或配置文件系统属性。
FTYPE 显示或修改在文件扩展名关联中使用的文件类型。
GOTO 将 Windows 、命令解释程序定向到批处理程序中某个带标签的行。
GPRESULT 显示计算机或用户的组策略信息。
GRAFTABL 使 Windows 在图形模式下显示扩展字符集。
HELP 提供 Windows 命令的帮助信息。
ICACLS 显示、修改、备份或还原文件和目录的 ACL。
IF 在批处理程序中执行有条件的处理操作。
LABEL 创建、更改或删除磁盘的卷标。
MD 创建一个目录。
MKDIR 创建一个目录。
MKLINK 创建符号链接和硬链接
MODE 配置系统设备。
MORE 逐屏显示输出。
MOVE 将一个或多个文件从一个目录移动到另一个目录。
OPENFILES 显示远程用户为了文件共享而打开的文件。
PATH 为可执行文件显示或设置搜索路径。
PAUSE 暂停批处理文件的处理并显示消息。
POPD 还原通过 PUSHD 保存的当前目录的上一个值。
PRINT 打印一个文本文件。
PROMPT 更改 Windows 命令提示。
PUSHD 保存当前目录,然后对其进行更改。
RD 删除目录。
RECOVER 从损坏的或有缺陷的磁盘中恢复可读信息。
REM 记录批处理文件或 CONFIG.SYS 中的注释(批注)。
REN 重命名文件。
RENAME 重命名文件。
REPLACE 替换文件。
RMDIR 删除目录。
ROBOCOPY 复制文件和目录树的高级实用工具
SET 显示、设置或删除 Windows 环境变量。
SETLOCAL 开始本地化批处理文件中的环境更改。
SC 显示或配置服务(后台进程)。
SCHTASKS 安排在一台计算机上运行命令和程序。
SHIFT 调整批处理文件中可替换参数的位置。
SHUTDOWN 允许通过本地或远程方式正确关闭计算机。
SORT 对输入排序。
START 启动单独的窗口以运行指定的程序或命令。
SUBST 将路径与驱动器号关联。
SYSTEMINFO 显示计算机的特定属性和配置。
TASKLIST 显示包括服务在内的所有当前运行的任务。
TASKKILL 中止或停止正在运行的进程或应用程序。
TIME 显示或设置系统时间。
TITLE 设置 CMD.EXE 会话的窗口标题。
TREE 以图形方式显示驱动程序或路径的目录结构。
TYPE 显示文本文件的内容。
VER 显示 Windows 的版本。
VERIFY 告诉 Windows 是否进行验证,以确保文件正确写入磁盘。
VOL 显示磁盘卷标和序列号。
XCOPY 复制文件和目录树。
WMIC 在交互式命令 shell 中显示 WMI 信息。
吴庞茂旭在2021-07-04 13:43:23追加了内容
3.system()
system() 操作符指令
包含头文件:
#include <cstdlib>
形式:
int __cdecl system(const char *_Command);
常用用法:
1. 清屏:system("cls");
2. 改变颜色:system("color 后景色前景色");
16进制颜色对照谱:
0=黑色,1=蓝色,2=绿色,3=湖蓝色,4=红色,5=紫色,6=黄色,7=白色,8=灰色,9=淡蓝色,A=淡绿色 B=浅绿色,C=淡红色,D=淡紫色,E=淡黄色,F=亮白色
3. 改变标题:system("title 标题");
4. 子文件图谱:system("tree");
5. 运行程序:system("程序地址");
6. 打开python编译器(有点奇怪但的确可以):system("python");
7. 暂停程序:system("pause");
8. 附录(大小写不需区分):
ASSOC 显示或修改文件扩展名关联。
ATTRIB 显示或更改文件属性。
BREAK 设置或清除扩展式 CTRL+C 检查。
BCDEDIT 设置启动数据库中的属性以控制启动加载。
CACLS 显示或修改文件的访问控制列表(ACL)。
CALL 从另一个批处理程序调用这一个。
CD 显示当前目录的名称或将其更改。
CHCP 显示或设置活动代码页数。
CHDIR 显示当前目录的名称或将其更改。
CHKDSK 检查磁盘并显示状态报告。
CHKNTFS 显示或修改启动时间磁盘检查。
CLS 清除屏幕。
CMD 打开另一个 Windows 命令解释程序窗口。
COLOR 设置默认控制台前景和背景颜色。
COMP 比较两个或两套文件的内容。
COMPACT 显示或更改 NTFS 分区上文件的压缩。
CONVERT 将 FAT 卷转换成 NTFS。你不能转换当前驱动器。
COPY 将至少一个文件复制到另一个位置。
DATE 显示或设置日期。
DEL 删除至少一个文件。
DIR 显示一个目录中的文件和子目录。
DISKPART 显示或配置磁盘分区属性。
DOSKEY 编辑命令行、撤回 Windows 命令并创建宏。
DRIVERQUERY 显示当前设备驱动程序状态和属性。
ECHO 显示消息,或将命令回显打开或关闭。
ENDLOCAL 结束批文件中环境更改的本地化。
ERASE 删除一个或多个文件。
EXIT 退出 CMD.EXE 程序(命令解释程序)。
FC 比较两个文件或两个文件集并显示它们之间的不同。
FIND 在一个或多个文件中搜索一个文本字符串。
FINDSTR 在多个文件中搜索字符串。
FOR 为一组文件中的每个文件运行一个指定的命令。
FORMAT 格式化磁盘,以便用于 Windows。
FSUTIL 显示或配置文件系统属性。
FTYPE 显示或修改在文件扩展名关联中使用的文件类型。
GOTO 将 Windows 、命令解释程序定向到批处理程序中某个带标签的行。
GPRESULT 显示计算机或用户的组策略信息。
GRAFTABL 使 Windows 在图形模式下显示扩展字符集。
HELP 提供 Windows 命令的帮助信息。
ICACLS 显示、修改、备份或还原文件和目录的 ACL。
IF 在批处理程序中执行有条件的处理操作。
LABEL 创建、更改或删除磁盘的卷标。
MD 创建一个目录。
MKDIR 创建一个目录。
MKLINK 创建符号链接和硬链接
MODE 配置系统设备。
MORE 逐屏显示输出。
MOVE 将一个或多个文件从一个目录移动到另一个目录。
OPENFILES 显示远程用户为了文件共享而打开的文件。
PATH 为可执行文件显示或设置搜索路径。
PAUSE 暂停批处理文件的处理并显示消息。
POPD 还原通过 PUSHD 保存的当前目录的上一个值。
PRINT 打印一个文本文件。
PROMPT 更改 Windows 命令提示。
PUSHD 保存当前目录,然后对其进行更改。
RD 删除目录。
RECOVER 从损坏的或有缺陷的磁盘中恢复可读信息。
REM 记录批处理文件或 CONFIG.SYS 中的注释(批注)。
REN 重命名文件。
RENAME 重命名文件。
REPLACE 替换文件。
RMDIR 删除目录。
ROBOCOPY 复制文件和目录树的高级实用工具
SET 显示、设置或删除 Windows 环境变量。
SETLOCAL 开始本地化批处理文件中的环境更改。
SC 显示或配置服务(后台进程)。
SCHTASKS 安排在一台计算机上运行命令和程序。
SHIFT 调整批处理文件中可替换参数的位置。
SHUTDOWN 允许通过本地或远程方式正确关闭计算机。
SORT 对输入排序。
START 启动单独的窗口以运行指定的程序或命令。
SUBST 将路径与驱动器号关联。
SYSTEMINFO 显示计算机的特定属性和配置。
TASKLIST 显示包括服务在内的所有当前运行的任务。
TASKKILL 中止或停止正在运行的进程或应用程序。
TIME 显示或设置系统时间。
TITLE 设置 CMD.EXE 会话的窗口标题。
TREE 以图形方式显示驱动程序或路径的目录结构。
TYPE 显示文本文件的内容。
VER 显示 Windows 的版本。
VERIFY 告诉 Windows 是否进行验证,以确保文件正确写入磁盘。
VOL 显示磁盘卷标和序列号。
XCOPY 复制文件和目录树。
WMIC 在交互式命令 shell 中显示 WMI 信息。
吴庞茂旭在2021-07-05 19:51:23追加了内容
4.map(有些学过的大佬可以帮我补充补充)
map<下标类型,值类型> 数组名 伪桶(映射): //可以用于数组过大的情况,但没有vector简单。该数据类型主要用于对譬如字符串类型等正常数组下标无法记录的数据类型的桶排序、记录
包含头文件:
#include <map>
形式:
template <typename _Key, typename _Tp, typename _Compare = std::less<_Key>,typename _Alloc = std::allocator<std::pair<const _Key, _Tp> > >class map//这是一个类似int、string的类型名称
常用用法:
定义:map<key_type,value_type> book;//book为变量名,以下统一使用该变量名
赋值:book[下标(与上key_type类型一致)]=值(与上value_type类型一致);
遍历当中所有元素:
map<int,bool>::iterator it;//迭代器
for(it=book.begin();it!=book.end();it++){
cout<<(*it).first<<" "<<(*it).second<<endl;
}
或者像桶:
for(int i=mina;i<=maxn;i++){
if(book[i]){
cout<<i<<" ";
}
}
桶中元素个数:book.size()
5.vector(有些学过的大佬可以帮我补充补充)
vector<值类型> 数组名 向量://数组过大时,建议使用
包含头文件:
#include <vector> 或
#include <queue>
形式:
template<typename _Alloc> class vector<bool, _Alloc> : protected _Bvector_base<_Alloc>//这是一个类似int、string的类型名称
常用用法:
定义:vector<vaule_type> a;//a为变量名,以下统一使用该变量名
在a后面添加一个新的元素(常常用于图论当中的邻接表的建立,新手可略过,等后期学到图论或等游戏典词条“图论”更新后参阅游戏典中词条“图论”):a.push_back(值(与上value_type类型一致));
更改值:a[下标(一定是int类型的,与正常数组没有区别)]=值(与上value_type类型一致);
遍历当中所有元素:
//与正常字符串类似
for(int i=0;i<a.size();i++){//下标正常从0开始
cout<<a[i]<<" ";
}
内部升序排序:
//与正常字符串无异
sort(a.begin(),a.end());
吴庞茂旭在2021-07-10 10:49:02追加了内容
6.【组合词条】暂停程序【方法汇总】:
【组合词条】暂停程序【方法汇总】:
1. system("pause");
包含头文件:
#include <cstdlib>
形式:
system("pause");
函数解释:
控制台会要求使用者按下任意键继续,否则不会发生任何事,此时按下任何键皆可继续
评价:
※※
可以满足游戏初级者的需要,但是高级码农很少会用这个函数,因为这会显示我们不需要的文字
2. getchar();
包含头文件:
#include <cstdio>
形式:
getchar()
函数解释:
按下任意一个字符和一个换行即可继续程序
评价:
※※※
这个函数搭配“变量=getchar()”使用十分方便,但是体验者会感到反感,因为需要不停地按字符和换行,降低体验感
3. Sleep(时间(ms));
包含头文件:
#include <windows.h>
形式:
Sleep(以毫秒为单位的时间)
函数解释:
等待一段时间后继续执行
评价:
※※※
这个函数可以不需要玩家按下键盘暂停程序,十分好用,大佬可以用来实现无字符暂停,但是windows函数在部分操作系统中无法调用,请谨慎使用!
4. mySleep(时间(秒));
包含头文件:
#include <time.h>
或
#include <ctime>
形式:
void mySleep(int second)
{
time_t start;
start = time(NULL);
while((time(NULL) - start) < second);
}
函数解释:
等待一段时间后继续执行
评价:
※※※※
这个函数可以不需要玩家按下键盘暂停程序,十分好用,大佬可以用来实现无字符暂停,任何操作系统均可实现,推荐使用!!!
5. ???
欢迎大佬提供新素材!
吴庞茂旭在2021-07-29 15:05:12追加了内容
STL(截取版)
以下文字截取自大佬赵逸凡
map的迭代器最常用的用法是
it->first和it->second
(*it).first和(*it).second速度可能没有上面快
vector可以定义数组,如
vector<edge> a[MAXN]
求单源最短路时,常常先edge e=a[i][j],再取出e.x,e.y
另外,set和vector常常用在一块儿
还有很多stl的东西放在一块儿的
struct edge{
int a;
double b;
char c;
float d;
}
stack< map<(long long),
priority_queue<pair<edge,string> ,
vector<pair<edge,string> >,
greater<pair<edge,int> > > a;
吴庞茂旭在2021-07-29 15:06:10追加了内容
游戏典第一弹新鲜出炉啦!
rand() 生成随机数种子
包含头文件:
#include <cstdlib>
形式:
int __cdecl rand(void);
常用用法:
l--左端点 r--右端点
( 或 ) 不包括后面或前面的数
[ 或 ] 包括后面或前面的数
如(l,r] 包括l但不包括r的区间
1. [l,r] rand()%(r-l+1)+l
2. (l,r] rand()%(r-l)+(l+1)
3. [l,r) rand()%(r-l)+l
4. (l,r) rand()%(r-l-1)+(l+1)
srand(time(NULL)) 根据时间戳产生随机数
包含头文件:
#include <ctime>
形式:
void __cdecl srand(unsigned int _Seed);
常用用法:
srand(time(NULL))
system() 操作符指令
包含头文件:
#include <cstdlib>
形式:
int __cdecl system(const char *_Command);
常用用法:
1. 清屏:system("cls");
2. 改变颜色:system("color 后景色前景色");
16进制颜色对照谱:
0=黑色,1=蓝色,2=绿色,3=湖蓝色,4=红色,5=紫色,6=黄色,7=白色,8=灰色,9=淡蓝色,A=淡绿色 B=浅绿色,C=淡红色,D=淡紫色,E=淡黄色,F=亮白色
3. 改变标题:system("title 标题");
4. 子文件图谱:system("tree");
5. 运行程序:system("程序地址");
6. 打开python编译器(有点奇怪但的确可以):system("python");
7. 暂停程序:system("pause");
8. 附录(大小写不需区分):
ASSOC 显示或修改文件扩展名关联。
ATTRIB 显示或更改文件属性。
BREAK 设置或清除扩展式 CTRL+C 检查。
BCDEDIT 设置启动数据库中的属性以控制启动加载。
CACLS 显示或修改文件的访问控制列表(ACL)。
CALL 从另一个批处理程序调用这一个。
CD 显示当前目录的名称或将其更改。
CHCP 显示或设置活动代码页数。
CHDIR 显示当前目录的名称或将其更改。
CHKDSK 检查磁盘并显示状态报告。
CHKNTFS 显示或修改启动时间磁盘检查。
CLS 清除屏幕。
CMD 打开另一个 Windows 命令解释程序窗口。
COLOR 设置默认控制台前景和背景颜色。
COMP 比较两个或两套文件的内容。
COMPACT 显示或更改 NTFS 分区上文件的压缩。
CONVERT 将 FAT 卷转换成 NTFS。你不能转换当前驱动器。
COPY 将至少一个文件复制到另一个位置。
DATE 显示或设置日期。
DEL 删除至少一个文件。
DIR 显示一个目录中的文件和子目录。
DISKPART 显示或配置磁盘分区属性。
DOSKEY 编辑命令行、撤回 Windows 命令并创建宏。
DRIVERQUERY 显示当前设备驱动程序状态和属性。
ECHO 显示消息,或将命令回显打开或关闭。
ENDLOCAL 结束批文件中环境更改的本地化。
ERASE 删除一个或多个文件。
EXIT 退出 CMD.EXE 程序(命令解释程序)。
FC 比较两个文件或两个文件集并显示它们之间的不同。
FIND 在一个或多个文件中搜索一个文本字符串。
FINDSTR 在多个文件中搜索字符串。
FOR 为一组文件中的每个文件运行一个指定的命令。
FORMAT 格式化磁盘,以便用于 Windows。
FSUTIL 显示或配置文件系统属性。
FTYPE 显示或修改在文件扩展名关联中使用的文件类型。
GOTO 将 Windows 、命令解释程序定向到批处理程序中某个带标签的行。
GPRESULT 显示计算机或用户的组策略信息。
GRAFTABL 使 Windows 在图形模式下显示扩展字符集。
HELP 提供 Windows 命令的帮助信息。
ICACLS 显示、修改、备份或还原文件和目录的 ACL。
IF 在批处理程序中执行有条件的处理操作。
LABEL 创建、更改或删除磁盘的卷标。
MD 创建一个目录。
MKDIR 创建一个目录。
MKLINK 创建符号链接和硬链接
MODE 配置系统设备。
MORE 逐屏显示输出。
MOVE 将一个或多个文件从一个目录移动到另一个目录。
OPENFILES 显示远程用户为了文件共享而打开的文件。
PATH 为可执行文件显示或设置搜索路径。
PAUSE 暂停批处理文件的处理并显示消息。
POPD 还原通过 PUSHD 保存的当前目录的上一个值。
PRINT 打印一个文本文件。
PROMPT 更改 Windows 命令提示。
PUSHD 保存当前目录,然后对其进行更改。
RD 删除目录。
RECOVER 从损坏的或有缺陷的磁盘中恢复可读信息。
REM 记录批处理文件或 CONFIG.SYS 中的注释(批注)。
REN 重命名文件。
RENAME 重命名文件。
REPLACE 替换文件。
RMDIR 删除目录。
ROBOCOPY 复制文件和目录树的高级实用工具
SET 显示、设置或删除 Windows 环境变量。
SETLOCAL 开始本地化批处理文件中的环境更改。
SC 显示或配置服务(后台进程)。
SCHTASKS 安排在一台计算机上运行命令和程序。
SHIFT 调整批处理文件中可替换参数的位置。
SHUTDOWN 允许通过本地或远程方式正确关闭计算机。
SORT 对输入排序。
START 启动单独的窗口以运行指定的程序或命令。
SUBST 将路径与驱动器号关联。
SYSTEMINFO 显示计算机的特定属性和配置。
TASKLIST 显示包括服务在内的所有当前运行的任务。
TASKKILL 中止或停止正在运行的进程或应用程序。
TIME 显示或设置系统时间。
TITLE 设置 CMD.EXE 会话的窗口标题。
TREE 以图形方式显示驱动程序或路径的目录结构。
TYPE 显示文本文件的内容。
VER 显示 Windows 的版本。
VERIFY 告诉 Windows 是否进行验证,以确保文件正确写入磁盘。
VOL 显示磁盘卷标和序列号。
XCOPY 复制文件和目录树。
WMIC 在交互式命令 shell 中显示 WMI 信息。
map<下标类型,值类型> 数组名 伪桶(映射): //可以用于数组过大的情况,但没有vector简单。该数据类型主要用于对譬如字符串类型等正常数组下标无法记录的数据类型的桶排序、记录
包含头文件:
#include <map>
形式:
template <typename _Key, typename _Tp, typename _Compare = std::less<_Key>,typename _Alloc = std::allocator<std::pair<const _Key, _Tp> > >class map//这是一个类似int、string的类型名称
常用用法:
定义:map<key_type,value_type> book;//book为变量名,以下统一使用该变量名
赋值:book[下标(与上key_type类型一致)]=值(与上value_type类型一致);
遍历当中所有元素:
map<int,bool>::iterator it;//迭代器
for(it=book.begin();it!=book.end();it++){
cout<<(*it).first<<" "<<(*it).second<<endl;
}
或者像桶:
for(int i=mina;i<=maxn;i++){
if(book[i]){
cout<<i<<" ";
}
}
桶中元素个数:book.size()
vector<值类型> 数组名 向量://数组过大时,建议使用
包含头文件:
#include <vector> 或
#include <queue>
形式:
template<typename _Alloc> class vector<bool, _Alloc> : protected _Bvector_base<_Alloc>//这是一个类似int、string的类型名称
常用用法:
定义:vector<vaule_type> a;//a为变量名,以下统一使用该变量名
在a后面添加一个新的元素(常常用于图论当中的邻接表的建立,新手可略过,等后期学到图论或等游戏典词条“图论”更新后参阅游戏典中词条“图论”):a.push_back(值(与上value_type类型一致));
更改值:a[下标(一定是int类型的,与正常数组没有区别)]=值(与上value_type类型一致);
遍历当中所有元素:
//与正常字符串类似
for(int i=0;i<a.size();i++){//下标正常从0开始
cout<<a[i]<<" ";
}
内部升序排序:
//与正常字符串无异
sort(a.begin(),a.end());
【组合词条】暂停程序【方法汇总】:
1. system("pause");
包含头文件:
#include <cstdlib>
形式:
system("pause");
函数解释:
控制台会要求使用者按下任意键继续,否则不会发生任何事,此时按下任何键皆可继续
评价:
※※
可以满足游戏初级者的需要,但是高级码农很少会用这个函数,因为这会显示我们不需要的文字
2. getchar();
包含头文件:
#include <cstdio>
形式:
getchar()
函数解释:
按下任意一个字符和一个换行即可继续程序
评价:
※※※
这个函数搭配“变量=getchar()”使用十分方便,但是体验者会感到反感,因为需要不停地按字符和换行,降低体验感
3. Sleep(时间(ms));
包含头文件:
#include <windows.h>
形式:
Sleep(以毫秒为单位的时间)
函数解释:
等待一段时间后继续执行
评价:
※※※
这个函数可以不需要玩家按下键盘暂停程序,十分好用,大佬可以用来实现无字符暂停,但是windows函数在部分操作系统中无法调用,请谨慎使用!
4. mySleep(时间(秒));
包含头文件:
#include <time.h>
或
#include <ctime>
形式:
void mySleep(int second)
{
time_t start;
start = time(NULL);
while((time(NULL) - start) < second);
}
函数解释:
等待一段时间后继续执行
评价:
※※※※
这个函数可以不需要玩家按下键盘暂停程序,十分好用,大佬可以用来实现无字符暂停,任何操作系统均可实现,推荐使用!!!
5. ???
STL(截取版)
以下文字截取自大佬赵逸凡
map的迭代器最常用的用法是
it->first和it->second
(*it).first和(*it).second速度可能没有上面快
vector可以定义数组,如
vector<edge> a[MAXN]
求单源最短路时,常常先edge e=a[i][j],再取出e.x,e.y
另外,set和vector常常用在一块儿
还有很多stl的东西放在一块儿的
struct edge{
int a;
double b;
char c;
float d;
}
stack< map<(long long),
priority_queue<pair<edge,string> ,
vector<pair<edge,string> >,
greater<pair<edge,int> > > a;
吴庞茂旭在2021-08-14 15:27:53追加了内容
最近我在录一些题目来玩,但是我发现了一个十分严重的问题:测试点!
真的,一个1000多个数字的测试点不仅要生成还要打乱,很烦,所以我就想了,能不能写一个算法随机打乱一个函数呢?
无根树。
是的,就是它!
开giao!
代码简单易懂,注释恰到好处,时间复杂度可以忍受,我给我的评价是:满分!我怎么这么天才!
//exam_KeyUpsetAlgorithm
/*
*算法理论:
* 对于一棵无根树,令任何一个结点为根都会行程一棵全新的、随机的树。重复此过程,令每一棵长度>1的子树达到随
* 机,(不一定是二叉树,但最大度数一定在[2,树的结点数/2]的区间内)返**来之后,形成的树是一个随机的,则
* 该树产生的生成数组也是一个随机的。
*伪代码:
* 对于每次生成根结点:
* root<-(-INF)
* 如果root在树中出现过或者非法或者root还未生成
* root<-rand(1,n) //可以优化为rand(l,r)
* num<-rand(2,n/2) //n表示树的结点数
* a[++cnt]=g[root] //a表示生成数组,cnt表示当前点的位置,g表示第i个位置表示的值是什么
* 循环num次,继续生成num个子树
*时间复杂度估计:
* 耗时部分:
* 1.产生root,最坏为n
* 2.产生子树,最坏为n/2
* 3.枚举每个生成的根结点,时间为n
* 综上考虑: 保守估计: O(2*n^2+n^2)
* 大致为: O(n^2)
*产生随机数组数量估计:
* 对于每一个点,都可能产生n+1种选择,但是由于是一个整体,所以是一个近似(n+1)!的数量
*/
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <ctime>
#include <map>
#define INF (0x3f3f3f3f)
#define MAXN 1005
using namespace std;
typedef int t1;
int n,m,cnt;
map<t1,int> book;
int a[MAXN],g[MAXN];
void KeyUpsetAlgorithm(){
if(n==0)return ;
int root=-INF;
while(root==-INF||!book[g[root]]){
root=rand()%m+1;
}
a[++cnt]=g[root];
book[g[root]]--;
n--;if(n==0){return ;}
int num=rand()%n+1;
// cout<<"将根结点定为"<<root<<",生成"<<num<<"个子树,现在"<<g[root]<<"还剩"<<book[root]<<"个\n";
for(int i=1;i<=num&&n!=0;i++){
KeyUpsetAlgorithm();
}
}
int main(){
srand(time(NULL));//令随机数按照时间**生成
while(cin>>g[++n])book[g[n]]++;
n--;
m=n;
KeyUpsetAlgorithm();
for(int i=1;i<=cnt;i++){
cout<<a[i]<<" ";
}
return 0;
}
我先在洛谷试了一个水,结果一个红名对我说:
我去,我岂不是白写了?后来才安**自己:你已经很NB了,在没有他人帮助的前提下写出了如此NB的代码。
害,白花了我一个多小时的时间……
七夕快乐,孤寡孤寡!
2
已采纳
曹灿阳
初级天翼
初级天翼
(l,r) [l,r) (l,r] [l,r]分别是什么意思?
其实srand(time(NULL))最好写成srand(time(0))
谢谢大佬提供代码!
3
1
1
0
0
0
0
赵逸凡
初级启示者
初级启示者
map的迭代器最常用的用法是
it->first和it->second
(*it).first和(*it).second速度可能没有上面快
vector可以定义数组,如
vector<edge> a[MAXN]
求单源最短路时,常常先edge e=a[i][j],再取出e.x,e.y
另外,set和vector常常用在一块儿
还有很多stl的东西放在一块儿的
struct edge
{
int a;
double b;
char c;
float d;
}
stack< map<(long long),priority_queue<pair<edge,string> ,vector<pair<edge,string> >, greater<pair<edge,int> > > a;
0
0
0
0
0
0
0
0