头像

punkboy


访客:253

离线:16小时前


活动打卡代码 AcWing 790. 数的三次方根

punkboy
3个月前
#include<iostream>
using namespace std;
int main()
{
double mid,l,r;
double n;
cin>>n;
l=-10000;
r=10000;
while(r-l>=1e-7)
{
mid=(l+r)/2;
if(mid*mid*mid>=n)r=mid;
else l=mid;
}
printf("%lf",l);
}
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~



punkboy
7个月前

C++ 代码

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 *     struct TreeNode *father;
 * };
 */
struct TreeNode* inorderSuccessor(struct TreeNode* p) {
    if(p->right)    //有右孩子
    {   
        p = p->right;
        while(p->left)  p = p->left;    //右子树的最左儿子
        return p;
    } 
    else  if(p->father)   //没有右孩子,则回溯父节点
    {
        if(p == p->father->right)   return p->right;     //右子树适用,返回null
        if(p->father->right) return p->father;   //左子树适用,返回父节点
    }
}



punkboy
7个月前
#include <iostream>
#include <vector>
#include <cstdio>

using namespace std;

const int N = 9;
int n;
vector<int> ans;
bool st[N]; 

void dfs(int u) //u表示当前的层数
{
    if(n==u)
    {
        for(int i=0; i<n; i++)
            printf("%d ", ans[i]);
        printf("\n");
        return;
    }

        for(int i=1; i<=n; i++) //将1到n依次填入不同的层数
        {
            if(!st[i])  //判断第i个数是否已经使用
            {
                st[i] = true; 
                ans.push_back(i);   
                dfs(u+1);   //遍历下一层
                st[i] = false;  //恢复现场
                ans.pop_back();
            }
        }
}


int main()
{
    cin>>n;
    dfs(0);
    return 0;
}


//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~



punkboy
7个月前
//这里填你的代码^^
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;

const int N = 15;
int st[N];  //记录每个数字或者不选的状态,0表示还未考虑;1表示选择;2表示不选
int n;

void dfs(int u)
{
    if(u==n) 
    {
        for(int i=0; i<=n; i++)
            if(st[i]==1) 
                printf("%d ", i+1);
        printf("\n");   //输出回车
        return; //每一个小分支的出口
    }
    //以下为分治
    st[u] = 2;  //不选第一个分支
    dfs(u+1);   //递归进入下一个分支
    st[u] = 0;  //恢复现场

    st[u] = 1;  //选择第一个分支
    dfs(u+1);   //递归进入下一个分支
    st[u] = 0;  //恢复现场
}   

int main()
{
    cin >> n;
    dfs(0);
    return 0;
}
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~


活动打卡代码 AcWing 717. 简单斐波那契

punkboy
7个月前
#include <stdio.h>
int n;
int ans[1000];

void f(int n)   //递推时间复杂度为On
{
    ans[0] = 0;
    ans[1] = 1;
    for(int i=2; i<n; i++)
    {
        ans[i] = ans[i-1]+ans[i-2];
    }
      for(int i=0; i<n; i++)
    {
       printf("%d ", ans[i]);
    }
    return;
}

int main()
{
    scanf("%d", &n);
    f(n);
    return 0;
}