算法的优化
来源:互联网 发布:网络专供电器 编辑:程序博客网 时间:2024/05/29 16:24
今天做了一道题,因为没想到简洁的方法,然后我写的程序很复杂,实现的功能却很简单,其实只需要一个简单的步骤就可以带过,实现相同的功能。
例题:
编写一个程序,求出满足下列条件的四位数:该数是个完全平方数,且第一、三位数字之和为10,第二、四位数字之积为12
思路:在解决完全平方数的时候,我想到的方法是对1000--10000进行遍历,让其除以30到100的数,若两个数相等,则求出完全平方数。 其实换一个思路会很简单,对1000--10000每个数进行开平方,再让结果乘方,这样便得到了一个完全平方数。
解决方法1:
/**********************************************************File Name: Author: xxx Date:2016-11-27Description: 编写一个程序,求出满足下列条件的四位数:该数是 个完全平方数,且第一、三位数字之和为10,第二、 四位数字之积为12Fuction List:************************************************************/#include<stdio.h>#define N 100int main(){int i;int a[N] = {0};int j;int k = 0;for (i = 1000; i < 10000; i++){for (j = 30; j < 100; j++){if (j * j == i){a[k] = i;k++;}}} /*for (i = 0; i <len; i++ ){printf("%d\n",a[i]);}*/int num_1;int num_2;int num_3;int num_4;int temp1;int temp2;for (i = 0; i < N; i++){num_4 = a[i] % 10;//printf("%d\n",num_1);num_3 = a[i] / 10 %10;num_2 = a[i] / 100 % 10;num_1 = a[i] /1000;//printf("%d\n",a[i]);temp1 = num_1 + num_3;temp2 = num_2 * num_4;//printf("num_1 + num_3=%d\n",temp1);//printf("num_2 * num_4=%d\n",temp2);if ((temp1 == 10) && (temp2 ==12)){printf ("%d\n", a[i]);}}return 0;}解决方法2:
/**********************************************************File Name: Author: xxx Date:2016-11-27Description: 编写一个程序,求出满足下列条件的四位数:该数是 个完全平方数,且第一、三位数字之和为10,第二、 四位数字之积为12Fuction List:************************************************************/#include<stdio.h>#include<math.h>int main(){int i;int j;int num_1;int num_2;int num_3;int num_4;for (i = 1000; i < 10000; i++){num_4 = i % 10;num_3 = i / 10 %10;num_2 = i / 100 % 10;num_1 = i /1000;j = sqrt(i);if ((j * j == i) && (num_1 + num_3 == 10) && (num_2 * num_4 ==12)){printf ("%d\n", i);}}return 0;}
从程序长短来看,就能很快发现第一种思路太过于冗长,而第二种很简单。
1 0
- [算法优化]优化阶乘算法的探索
- 冒泡算法的优化
- 算法的优化实现
- 需要优化的算法
- 乘方的优化算法
- 微算法的优化
- 冒泡算法的优化
- 冒泡算法的优化
- 优化的冒泡算法
- LSC 的优化算法
- 常见的优化算法
- FloodFill算法的优化
- KMP算法的优化
- 算法的优化
- kmp算法的优化
- 优化阶乘算法的探索
- 多线程队列的算法优化
- 快速排序的优化算法
- javascript学习之三(闭包)
- C++拾遗--多线程:多线程的引入
- 理解HTTP协议
- 搜索引擎学习笔记 --- 结构与模块图
- 翻译spring-cloud的一篇文章
- 算法的优化
- UiAutomator笔记之UiScrollable API(六)
- 开博首贴:HelloBolg
- 11月英语--慢慢回温
- php数组常用方法详解
- 1.引言 OpenFlow1.5核心概念翻译与理解-OpenFlow1.5中文版
- 异常与中断处理
- 利用SAS软件制作报表的常用手法
- 深刻理解Python中的元类(metaclass)