目录 |
蓝桥杯试题数字游戏
用do while先进循环之后在判断
用的是暴力解法目前没想到啥好的解法想到了会补充
用next_permutation对n以内的数进行了升序排序确保得到的是最小的
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 100;
int main()
{
int n;
cin >> n;
int a[N], b[N];
int k = 0;
for (; k < n; k++)
{
a[k] = 1 + k;
}
int Sum;
cin >> Sum;
do
{
for (int i = 0; i < n; i++)
{
b[i] = a[i];
}
for (int i = 1; i <= n; i++)
{
for (int j = 0; j < n - i; j++)
{
b[j] = b[j] + b[j + 1];
}
}
if (b[0] == Sum)
{
for (int i = 0; i < n; i++)
{
cout << a[i] << " ";
}
cout << endl;
break;
}
} while (next_permutation(a, a + n));
}
蓝桥杯练习题无聊的逗
这个题可以骗分你要是不会就求和的一半能得80(哈哈)
现在我也不太会做他等以后想明白了再来更
Kac给糖果你吃
我不理解这道题
貌似是考最简单的贪心
#include <iostream> #include <algorithm> #include<vector> using namespace std; const int N = 1000; int main(){ int n, m; cin>>n>>m; int A[N]; for(int i=0;i<n;i++){ cin>>A[i]; } long long sum=0; sort(A,A+n); reverse(A,A+n); if(m>=n){ for(int i=0;i<n;i++){ sum+=A[i]; } } else { for(int i=0;i<m;i++){ sum+=A[i]; } } cout<<sum<<endl; }