【数据结构】第3章 栈

一、简答题

二、程序设计题

  1. 设计一个算法将一个非负的十进制数转换成二进制输出
#include <iostream>
#include <stack>

using namespace std;

stack<int> stk;

// 十进制转x进制
void solve(int n, int base) // n为要转的十进制数,base为要转为x机制
{
    // 短除法
    while (n > 0)
    {
        int r = n % base; // 求余数
        stk.push(r);
        n /= base;
    }

    // 输出转换后的结果,转换结果是从上到下压入栈中的,所以只要依次输出栈顶就是所求
    while (stk.size())
    {
        cout << stk.top();
        stk.pop();
    }
}

int main()
{
    int n;
    cin >> n;
    solve(n, 2);
    return 0;
}
  1. 试分别设计输出N个数的全排列的递归函数和非递归函数

递归版:

#include <iostream>

using namespace std;

const int N = 10;

int n;
int path[N];
bool st[N];

void dfs(int u)
{
    if (u >= n) 
    {
        for (int i = 0; i < n; i ++ ) printf("%d ", path[i]);
        printf("\n");
        return;
    }
    for (int i = 1; i <= n; i ++ )
    {
        if (!st[i])
        {
            path[u] = i;
            st[i] = true;
            dfs(u + 1);
            st[i] = false;
        }
    }
}

int main()
{
    cin >> n;
    dfs(0);
    return 0;
}
posted @   Tshaxz  阅读(13)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
Language: HTML
点击右上角即可分享
微信分享提示