第二次作业遗留问题的解决

最后的寒假作业总结

模块化问题

首先,模块化问题可以采用两种方法进行解决:
https://blog.csdn.net/weixin_43350361/article/details/106455331
第一,使用头文件进行处理
屏幕截图 2022-02-16 141231.jpg
第二,使用创建项目进行连接
屏幕截图 2022-02-16 141210.jpg
两种方法我都试过了,那么,最后我采用头文件进行最后的处理。
那么记得在开头结尾加上预编译的语句可以大大加快运行速度

代码量问题

在此,我尝试使用scanf形式输入,但是输入的时间会比cin流慢很多(scanf输入要几秒,cin<1秒,因此不改变输入的问题,整体算法不变),所以模块化问题以及一点点算法的改进让400行代码缩短到200行左右(包括头文件)

一个是rule判断过程的简化,一个是函数模块化的处理,判断过程主要由于/31根据网络的算法会导致原本存储<31的端点ip无法区分大小,那么直接加上一个31时将ip1,ip2的大小确定下来就行

if (ip1[len] > ip11[len])
		{
			x = ip1[len];
			ip1[len] = ip11[len];
			ip11[len] = x;
		}

		if (ip2[len] > ip21[len])
		{
			x = ip2[len];
			ip2[len] = ip21[len];
			ip21[len] = x;
		}

命令行问题

最基本的原理就是创建一个文件指针但是不指向任何文件,然后数组储存文件名,然后打开文件的一个过程,就可以实现main.exe的运行和文件名自由输入的问题
https://zhidao.baidu.com/question/512121968.html

屏幕截图 2022-02-16 140557.jpg
屏幕截图 2022-02-16 141520.jpg

最后,在本地操作的过程中,运行一个88万行数据包(不包括输入文件名过程,直接设定好文件)所需时间为1300ms左右,50万行大概700ms,在cmd上运行无法显示时间,所以手动处理了一下。

数据流缺点以及算法局限性

使用数据流处理原本会导致最后的答案多出一行,假如原本最后一行是666,但是cin数据流输入会导致多出一行666.解决方法就是在输入之前进行初始化,比如ip的十进制初始化为-1(负数即可)就可以判断。

这个算法有一个局限性,就是在rule比较小的情况之下算法可行,但是在入了文件较大的时候,比如十万以上的情况就会导致数据溢出(数组开太小,太大占空间也可能导致运行失败)

posted @ 2022-02-16 14:40  帝芬尼  阅读(34)  评论(0编辑  收藏  举报