我是靠谱客的博主 痴情身影,最近开发中收集的这篇文章主要介绍2021-10-08,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

J

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
// 总结一下 写一个递归函数就是反推
// 首先确定最里面的一层递归如何返回 
// 随后 再确定 如何进入到最里面一层的递归
// 最后确定 最外层要如何进入递归
// 以本题为例 确定当x为1或2是最里层 直接返回对应答案
// 再确定 当x为4或2时 会进入最里层
// 最后确定 整个递归的过程是每轮分解最高次幂 就是最高的次数作为最外层进入递归 
void dfs(int x){
if (x==1) {
cout<<"2(0)";
return ;
}
if (x==2){
cout<<"2";
return ;
}
//确定当x为1或2是最里层 直接返回对应答案

int z=1<<15;
for (int i=15;i>=0;i--){
if (x>>i&1){
if (i!=1&&i!=0) {
cout<<"2(";
dfs(i);
//最后确定 整个递归的过程是每轮分解最高次幂 就是最高的次数作为最外层进入递归

}
else dfs(1<<i);
//当x为4或2时 会进入最里层

x-=1<<i;
if (i!=1&&i!=0) cout<<")";
if (x>0)cout<<"+";
}
}
}
int main (){
int n;
while (scanf ("%d",&n)!=EOF){
dfs(n);
cout<<'n';
}
return 0;
}

I
循环实现

#include <iostream> 
#include <cstdio>
using namespace std;
int st[90];//记录每个位置的3种状态 
int n,a[111];
long long t;
int ans=0;
int main (){
scanf("%d", &n);;
for (int i = 0; i < n; i ++ ){
scanf ("%d",&a[i]);
}
scanf ("%lld",&t);
for (int i=1;i<1<<n;i++){
int cnt,v[29];
long long sum;
sum=cnt=0;
for (int j=0;j<n;j++){
if (i>>j&1){
sum+=a[j];
v[cnt++]=j;
}
}
if (sum==t&&cnt>0){
ans++;
for (int j=0;j<cnt;j++){
cout<<a[v[j]]<<' ';
}
cout<<'n';
}
}
cout<<ans;
return 0;
}

递归实现

#include <iostream> 
#include <cstdio>
using namespace std;
int st[90];//记录每个位置的3种状态 1选 2不选 0未确定
int n,a[111];
long long t;
int ans=0;
void dfs(int u){
int i;
if (u==n) {
long long sum=0;
int v[26],cnt=0;
for (int i=n-1,j=0;i>=0;i--,j++){
if (st[i]==1){
v[cnt++]=a[j];
sum+=a[j];
}
}
if (sum==t&&cnt>0) {
ans++;
for (int i=0;i<cnt;i++){
cout<<v[i]<<' ';
}
cout << endl ;
}
return ;
}
else {
st[u]=2;
dfs(u+1);
st[u]=0;
st[u]=1;
dfs(u+1);
st[u]=0;
}
}
int main (){
scanf("%d", &n);;
for (int i = 0; i < n; i ++ ){
scanf ("%d",&a[i]);
}
scanf ("%lld",&t);
dfs(0);
cout<<ans;
return 0;
}

H

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int n;
string s;
void my_reverse(int u){
if (u<n/2){
swap(s[u],s[n-u-1]);
cout<<s<<'n';
my_reverse(u+1);
return ;
}
else return ;
}
int main()
{
scanf("%d", &n);
cin>>s;
//cout<<s<<'n';
my_reverse(0);
puts("");
cout<<s<<'n';
return 0;
}

G

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int n;
int p2[5]={1,3,5,7,9};
bool check(int x){
for (int i=2;i<=x/i;i++){
if (x%i==0) return 0;
}
return 1;
}
void dfs(int u,int now){
if (u==n){
printf ("%dn",now);
return ;
}
for (int i=0;i<5;i++){
if (check(now*10+p2[i])){
dfs(u+1,now*10+p2[i]);
}
}
return ;
}
int main()
{
scanf("%d", &n);
dfs(1,2);
dfs(1,3);
dfs(1,5);
dfs(1,7);
return 0;
}

F

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int n,a[100010];
int s[100010];
int main()
{
scanf("%d", &n);
int mxa=-1e9;
for (int i = 1; i <= n; i ++ ){
scanf("%d", &a[i]);
int t=0;
t+=a[i];
if (t<0){
t=0;
mxa=max(mxa,t);
}
else mxa=max(mxa,t);
//s[i]=s[i-1]+s[i];
}
cout<<mxa;
return 0;
}

E

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int n;
string s;
string i_s(int x){
string u;
while (x){
u+=x%10+'0';
x/=10;
}
reverse(u.begin(),u.end());
return u;
}
string dfs_a(int l,int r){
string u="sin(";
if (l==r) {
u+=i_s(r);
u+=')';
return u;
}
u+=i_s(l);
if (l%2){
u+='-';
}
else u+='+';
u+=dfs_a(l+1,r);
u+=')';
return u;
}
void Sn(int u){
for (int i=1;i<n;i++) s+='(';
for (int i=1;i<=u;i++){
// s+='a';
// s+=i_s(i);
s+=dfs_a(1,i);
s+='+';
s+=i_s(u-i+1);
if (u-i+1>=2) s+=')';
}
}
int main()
{
scanf("%d", &n);
Sn(n);
cout<<s;
return 0;
}

D

#include<iostream>
using namespace std;
int main()
{
int a;
scanf ("%d",&a);
int v[4];
int cnt=0;
while (a){
v[cnt++]=a%10;
a/=10;
}
for (int i=cnt-1;i>=0;i--){
printf ("%d ",v[i]);
}
return 0;
}

C

#include<iostream>
using namespace std;
int main()
{
string a,b;
cin>>a>>b;
cout<<a<<b;
return 0;
}

B

#include <iostream>
#include <vector>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
int main (){
long long n;
scanf ("%lld",&n);
int p=1;
for (long long i=2;i<=n/i;i++){
if (n%i==0) {
p=0;
break;
}
}
if (p) puts("prime");
else puts("not prime");
}

A

#include <iostream>
#include <vector>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
int n;
long long f[110];
int main (){
f[1]=1,f[2]=2,f[3]=3;
for (int i=4;i<=59;i++){
f[i]=f[i-1]+f[i-3];
}
while (scanf ("%d",&n)!=EOF){
if (n==0) break;
printf ("%lldn",f[n]);
}
}

最后

以上就是痴情身影为你收集整理的2021-10-08的全部内容,希望文章能够帮你解决2021-10-08所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部