Learning C/C++
来源:互联网 发布:ubuntu 商业版 编辑:程序博客网 时间:2024/06/05 05:23
#include<iostream>
using namespace std;
//只包含因子2,3,5的数称为丑数;
int Min(int a1, int a2, int a3)
{
int min = (a1 < a2) ? a1 : a2;
return (min < a3) ? min : a3;
}
int GetUglyNumber(int index)
{
if(index <= 0)
return 0;
int *pUglyNumbers = new int[index];
pUglyNumbers[0] = 1;
int nextIndex = 1;
int *p2 = pUglyNumbers;
int *p3 = pUglyNumbers;
int *p5 = pUglyNumbers;
while(nextIndex < index)
{
int min = Min(*p2 * 2, *p3 * 3, *p5 * 5);
pUglyNumbers[nextIndex] = min;
while(*p2 * 2 <= pUglyNumbers[nextIndex])//找到2倍数刚好大于排好序的末数的那个数
++p2;
while(*p3 * 3 <= pUglyNumbers[nextIndex])//找到3倍数刚好大于排好序的末数的那个数
++p3;
while(*p5 * 5 <= pUglyNumbers[nextIndex])//找到5倍数刚好大于排好序的末数的那个数
++p5;
++nextIndex;
}
int ugly = pUglyNumbers[nextIndex - 1];
delete[] pUglyNumbers;
return ugly;
}
//求包含2或3或5的数的序列;
int GetNumber(int index)
{
if(index < 1)
return 0;
int *pNumbers = new int[index + 1];
pNumbers[0] = 1;
int pindex = 1;
int pNum = 1;
while (pindex <= index)
{
++pNum;
if((pNum % 2 == 0 )|| (pNum % 3 == 0 ) || (pNum % 5 == 0 ))
pNumbers[pindex ++] = pNum;
}
int number = pNumbers[index];
delete[] pNumbers;
return number;
}
int GetNumber_refine(int index)
{
if(index < 1)
return 0;
int *pNumbers = new int[index + 1];
pNumbers[0] = 1;
int pIndex = 1;
int i2 = 1;
int i3 = 1;
int i5 = 1;
while(pIndex <= index)
{
int min = Min(2 * i2, 3 * i3, 5 * i5);
pNumbers[pIndex] = min;
while(2 * i2 <= pNumbers[pIndex])
++i2;
while(3 * i3 <= pNumbers[pIndex])
++i3;
while(5 * i5 <= pNumbers[pIndex])
++i5;
++pIndex;
}
int number = pNumbers[index];
delete[] pNumbers;
return number;
}
using namespace std;
//只包含因子2,3,5的数称为丑数;
int Min(int a1, int a2, int a3)
{
int min = (a1 < a2) ? a1 : a2;
return (min < a3) ? min : a3;
}
int GetUglyNumber(int index)
{
if(index <= 0)
return 0;
int *pUglyNumbers = new int[index];
pUglyNumbers[0] = 1;
int nextIndex = 1;
int *p2 = pUglyNumbers;
int *p3 = pUglyNumbers;
int *p5 = pUglyNumbers;
while(nextIndex < index)
{
int min = Min(*p2 * 2, *p3 * 3, *p5 * 5);
pUglyNumbers[nextIndex] = min;
while(*p2 * 2 <= pUglyNumbers[nextIndex])//找到2倍数刚好大于排好序的末数的那个数
++p2;
while(*p3 * 3 <= pUglyNumbers[nextIndex])//找到3倍数刚好大于排好序的末数的那个数
++p3;
while(*p5 * 5 <= pUglyNumbers[nextIndex])//找到5倍数刚好大于排好序的末数的那个数
++p5;
++nextIndex;
}
int ugly = pUglyNumbers[nextIndex - 1];
delete[] pUglyNumbers;
return ugly;
}
//求包含2或3或5的数的序列;
int GetNumber(int index)
{
if(index < 1)
return 0;
int *pNumbers = new int[index + 1];
pNumbers[0] = 1;
int pindex = 1;
int pNum = 1;
while (pindex <= index)
{
++pNum;
if((pNum % 2 == 0 )|| (pNum % 3 == 0 ) || (pNum % 5 == 0 ))
pNumbers[pindex ++] = pNum;
}
int number = pNumbers[index];
delete[] pNumbers;
return number;
}
int GetNumber_refine(int index)
{
if(index < 1)
return 0;
int *pNumbers = new int[index + 1];
pNumbers[0] = 1;
int pIndex = 1;
int i2 = 1;
int i3 = 1;
int i5 = 1;
while(pIndex <= index)
{
int min = Min(2 * i2, 3 * i3, 5 * i5);
pNumbers[pIndex] = min;
while(2 * i2 <= pNumbers[pIndex])
++i2;
while(3 * i3 <= pNumbers[pIndex])
++i3;
while(5 * i5 <= pNumbers[pIndex])
++i5;
++pIndex;
}
int number = pNumbers[index];
delete[] pNumbers;
return number;
}
0 0
- C++learning
- Some C Learning Notes
- Learning GNU C
- zz(learning c++)
- C 指针[learning]
- Learning C from Java
- For learning the C
- Learning C with gdb
- C. Learning Languages
- Start learning C
- <Essential C++> Learning
- Objective-C Learning notes
- Learning C/C++
- C/C++ Pointer Learning ||
- c++: Learning Resources
- Objective-C入门(Learning Objective-C)
- Objective-C入门(Learning Objective-C)
- Deep Learning (Python, C/C++, Java) matlab
- jquery制作banner图片左右上下切换滚动特效
- 【Leetcode】Jump Game 1,2
- 网易新闻iOS版使用的18个开源组件
- 分布式数据库集群中间件------为什么选择MySQL
- 日经社説 20150826 ネット国勢調査を円滑に
- Learning C/C++
- 内部类的实例化
- jxl(Java Excel API) 使用方法 【2】
- 常规功能和模块自定义系统(cfcmms)—003概述
- Thread之Exchanger
- 一、A*搜索算法
- 通过iOS 9 SFSafariViewController提供完整的Web浏览体验
- android 学习笔记 通知的使用
- ubuntu下安装deb文件