精选文章 ACM对拍程序

ACM对拍程序

作者:dianshu1593 时间: 2018-09-24 08:06:00
dianshu1593 2018-09-24 08:06:00

对拍

不停的随机生成测试数据,分别运行两个程序并对比其结果。这个任务被形象的称为对拍 。

流程

(1)编写好生成随机数程序(r.cpp),我的程序(a.cpp),标准程序(b.cpp),编译

(2)将生成的r.exe、a.exe、b.exe以及批处理脚本(.bat)放到同一个文件夹下

(3)运行批处理脚本,发现不同时会自动暂停

生成随机数据

这里只写产生整数,产生小数和字符串只要在这个基础上简单修改就行。

 1 #include
 2 #include
 3 #include
4 #define random(a,b) ((a)+rand()%((b)-(a)+1)) //random(a,b)生成[a,b]的随机整数 5 int main( ) 6 { 7 8 srand( time( NULL ) ); 9 int t,n = 10000 ; 10 while( n-- ) 11 { 12 printf("%d\n",rand() ); //rand()的范围是0~RAND_MAX(即[0,32767]) 13 } 14 return 0; 15 }

Windows下的批处理

 1 @echo off        //关掉输入显示,否则所有的命令也会显示出来
 2 
 3 :loop    
 4     rand.exe > in.txt                        //生成随机输入
 5     my.exe < in.txt  > myout.txt       
 6     std.exe < in.txt  > stdout.txt
 7     fc myout.txt stdout.txt                   //比较文件
 8 if not errorlevel 1   goto loop               //不为1继续循环,fc在文件相同时返回0,不同时返回1
 9 pause                //不同时暂停,你可以看in.txt里的数据
10 goto loop            //看完数据,按任意键结束暂停,继续循环

用文本编辑器(记事本就行)写好,保存为.bat 后缀名

Linux下的Bash脚本

1 #!/bin/bash
2 while true; do
3     ./r > input                          //生成随机事件
4     ./a < input > output.a
5     ./b < input > output.b
6     diff output.a output.b           //文本比较
7     if [ $? -ne 0 ] ; then break;fi     //判断返回值
8 done

同样用文本编辑器写好保存为.s(例如cmp.sh),在执行chmod +x cmp.sh,即可用./cmp.sh来执行它,当然扩展名也不是必需的,完全可以用不带扩展名的cmp命名。

随机数算法改进

上面的随机数的随机数算法中,生成随机种子函数参数 time(NULL)

 随机数算法:

 1 #include
 2 using namespace std;
 3 #define random(a,b) ((a)+rand()%((b)-(a)+1))
 4 
 5 stringstream ss;
 6 
 7 int main( int argc, char *argv[] )
 8 { 
 9     int seed=time(NULL);
10     if(argc > 1)//如果有参数
11     {
12         ss.clear();
13         ss<1];
14         ss>>seed;  //把参数转换成整数赋值给seed
15     }
16     srand(seed);
17     //以上为随机数初始化,请勿修改
18     //random(a,b)生成[a,b]的随机整数
19 
20     //以下写你自己的数据生成代码 
21     printf("1\n");
22     int n=10;
23     int m=random(1,20);
24     printf("%d %d\n",n,m);
25     for(int i=0 ; ii)
26     {
27         printf(" %d ",random(0,m));
28     }
29     printf("\n");
30     return 0;
31 }

批处理脚本:

1 @echo off  
2 :loop  
3     rand.exe %random% > data.in
4     std.exe < data.in > std.out
5     my.exe < data.in > my.out
6     fc my.out std.out 
7 if not errorlevel 1 goto loop  
8 pause
9 goto loop

 参考链接:

(1)ACM/OI对拍程序的写法:https://blog.csdn.net/wlx65003/article/details/51149196

(2)ACM对拍程序:https://blog.csdn.net/churehill123/article/details/19647579

 (3)C语言中rand()函数的用法笔记:https://blog.csdn.net/chikey/article/details/66970397

转载于:https://www.cnblogs.com/lfri/p/9696464.html

勿删,copyright占位
分享文章到微博
分享文章到朋友圈

上一篇:【shell】shell编程总结

下一篇:NOIP2018原创模拟赛DAY1 密室

您可能感兴趣

  • B 站疯传,堪称最强,一整套数据分析课程,学完月薪30K+!

    2020魔幻之年,疫情下就业大受影响,很多岗位缩招,而数据分析相关工作岗位恋习Python(如数据分析师、数据挖掘师等岗位)却在增加。非专业数据分析岗位(如运营、市场、销售等岗位)也要求“数据分析”能力。大数据时代的未来,数据分析将是每个岗位的必备技能。 很多人知道数据分析非常重要,下载了一些资料,却觉得无从下手,很难学。为你推荐奈学教育精心打造的“全栈大数据分析师”课程, 本课通过多业务场...

  • 中国耳机能否把AirPods拉下铁王座,全看一颗“芯”

    作者|茜茜 编辑|猛哥 1853年,犹太青年李维斯和当时的许多美国人一样,满怀梦想地踏上了西部淘金之旅。 很遗憾,他去晚了,到处都是人,还被抢地盘的恶棍们给揍了一顿。 李维斯很快从欺辱中恢复过来,他发现淘金人的衣服很容易磨破,而西部到处都是废弃的帐篷,如果把这些帐篷缝制成裤子,肯定抗穿耐磨。就这样,他缝制了世界上第一条牛仔裤。从此开创了他的牛仔裤王国。 世上的事情就是这么不可思议。 150年...

  • 为什么美国程序员不用加班,而中国程序员就只能996?

    点击上方蓝色小字,关注“涛哥聊Python” 重磅干货,第一时间送达 梅宁航 发自 凹非寺 量子位 报道 | 公众号 QbitA 作者系网易新闻·网易号“各有态度”签约作者 按惯例,先问是不是,再问为什么。 从知乎回答浏览量看,是的。 那么为什么美国程序员就可以到点下班回家,而中国程序员就要每天“主动”、“无偿”加班呢? 仔细看了群众们热情的回答之后,大概可以分为几派: 1、产品经理不够通情...

  • Flutter 1.17 中的导航解密和性能提升

    Python实战社群 Java实战社群 长按识别下方二维码,按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 作者丨恋猫de小郭 来源丨GSYTech(gsy-tech-zone) Flutter 1.17 对比上一个稳定版本,更多是带来了性能上的提升,其中一个关键的优化点就是 Navigator 的内部逻辑,本篇将带你解密 Navigator 从 1....

  • python果然万能啊,这也行?

    有没有因为“搜一下”烦恼过? 虽然说现在搜索引擎很多,但百度早就失去“百度一下你就知道”的功能了,经常网上一搜,全是没用的鸡肋信息,很多软件也没啥实际用处,气坏了我们这些热锅上的蚂蚁! 这不,前些天朋友正为找房子的事烦心着呢!他没想到找房子居然比找工作还难,用他原话说,就是房子没找到,头发都是一抓一大把。 昨天,他突然给我发了条信息,看完我整个人都惊了! 他用Python脚本爬取租房网站的房...

  • 人工智能那么火~如今AI的应用场景都有哪些?

    作者:新智元 链接:https://www.zhihu.com/question/282715644/answer/1329782546 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 【未来5年AI应用报告】谷歌、DeepMind、英伟达科学家支招企业AI应用 ReWork的一份最新AI落地应用报告,阐述了企业该如何使用AI技术。谷歌的Ian GoodFe...

  • SLAM入门+典型SLAM应用及解决方案

    本人初入SLAM小白,目前没有能力发表自己的独到见解,但乐于发现一些好的文章供大家参考,希望对大家有帮助。 随着AR/VR行业的兴起,以及智能移动机器人、无人驾驶的发展,行业对SLAM技术的需求出现了井喷。另一方面,随着传感器技术的发展,计算资源的丰富以及算法的进步,SLAM技术本身也进入了一个从算法到产品过渡的阶段。行业中已经出现了一些以SLAM技术为主的产品,但离进入千家万户还有一定的距...

  • 《重新定义公司》读书笔记

    激励偏向的是事成之后的利益分享,而赋能强调的,是激起创意人的兴趣与动力,给予挑战。唯有发自内心的志趣,才能激发持续的创造,命令则不适用于他们。因此,组织的职能不再是分派任务和监工,而更多的是让员工的专长、兴趣和客户的问题有更好的匹配,这往往要求更多的员工自主性、更高的流动性和更灵活的组织。我们甚至可以说,是员工使用了组织的公共服务,而不是公司雇用了员工。两者的根本关系发生了颠倒。 年少时,第...

华为云40多款云服务产品0元试用活动

免费套餐,马上领取!
CSDN

CSDN

中国开发者社区CSDN (Chinese Software Developer Network) 创立于1999年,致力为中国开发者提供知识传播、在线学习、职业发展等全生命周期服务。