C++ 中的简化分数
假设我们有一个整数 n,我们需要找到 0 和 1(不包括 0 和 1)之间所有简化分数的列表,使得分母 <= n。这里分数可以按任意顺序排列。
因此,如果输入为 n = 4,则输出将为 ["1/2","1/3","1/4","2/3","3/4"],因为 "2/4" 不是简化分数,因为它可以简化为 "1/2"。
为了解决这个问题,我们将遵循以下步骤:
定义一个数组 ret
初始化 i := 2,当 i <= n 时,更新(i 增加 1),执行:
初始化 j := 1,当 j < i 时,更新(j 增加 1),执行:
c := i 和 j 的最大公约数
a := j / c
b := i / c
将 (a 作为字符串连接 "/" 连接 b 作为字符串) 插入到 ret 的末尾
返回 ret 中所有唯一元素的数组
示例
让我们看看下面的实现,以便更好地理解:
#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<string> v){
cout << "[";
for(int i = 0; i<v.size(); i++){
cout << v[i] << ", ";
}
cout << "]"<<endl;
}
class Solution {
public:
vector<string> simplifiedFractions(int n) {
vector<string> ret;
for (int i = 2; i <= n; i++) {
for (int j = 1; j < i; j++) {
int c = __gcd(i, j);
int a = j / c;
int b = i / c;
ret.push_back(to_string(a) + "/" + to_string(b));
}
}
set<string> s(ret.begin(), ret.end());
return vector<string>(s.begin(), s.end());
}
};
main(){
Solution ob;
print_vector(ob.simplifiedFractions(4));
}输入
4
输出
[1/2, 1/3, 1/4, 2/3, 3/4, ]
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP