2月10日:最简分数 [智能2003]
方法:set,vecto
- 方法一:set
利用集合的不可重复性来去除相同的分数
class Solution {
public:
vector<string> simplifiedFractions(int n)
{
vector<string> res;
set<pair<int,int>> queue;//前为分子,后为分母
for(int i=2;i<=n;i++)//分母
{
for(int j=1;j<i;j++)//得判断互质数
{
int a=j,b=i;
int lcm=gcd(a,b);
a/=lcm,b/=lcm;
{queue.insert(pair<int,int>(a,b));}
}
}
for(auto it:queue)
{
res.push_back(to_string(it.first)+"/"+to_string(it.second));
}
return res;
}
};
- 直接判断如果有公因数直接continue
class Solution {
public:
vector<string> simplifiedFractions(int n)
{
vector<string> res;
vector<pair<int,int>> queue;//前为分子,后为分母
for(int i=2;i<=n;i++)//分母
{
for(int j=1;j<i;j++)//得判断互质数
{
if(gcd(i,j)!=1)
continue;
queue.push_back(pair<int,int>(j,i));
}
}
for(auto it:queue)
{
res.push_back(to_string(it.first)+"/"+to_string(it.second));
}
return res;
}
};
- 不储存直接保存
class Solution {
public:
vector<string> simplifiedFractions(int n)
{
vector<string> res;
for(int i=2;i<=n;i++)//分母
{
for(int j=1;j<i;j++)//得判断互质数
{
if(gcd(i,j)!=1)
continue;
res.push_back(to_string(j)+"/"+to_string(i));
}
}
return res;
}
};
不熟悉的函数与用法
1.gcd(i,j)返回I,j的最小公约数
2.to_string(xxx)将xxx变成字符串类型,相当于Python中的str()
3.数字对的定义用法必须要提及pair
vector<pair<int,int>>
4.为数字对赋值
pair<int,int>(a,b)
5.如果要用set就要使用insert()函数来加元素