【问题标题】:write permutations of 0 and 1写出 0 和 1 的排列
【发布时间】:2015-12-07 22:41:15
【问题描述】:

我需要用帕斯卡制作程序。

例如

readln(4)

并且输出应该是 0 和 1 的所有排列

0000 0001 0010 0100 0111 0011 0110 0101 1010 1000 1001 1100 1011 1101 1110 1111

你能帮帮我吗?

【问题讨论】:

  • 我很确定您的讲师希望看到您的作品而不是我们的作品。如果您无法开始作业,请向您的导师寻求帮助;要么他们还没有为你提供教育而获得报酬,要么你在课堂上没有专心。
  • 对不起,我不想让你做我的作业。我向您寻求帮助,因为当我向老师寻求帮助时,他的回答是“尝试像程序一样思考”,而这对我来说不是寻找食物
  • 对不起。正如我所说,我们不是来做你的作业的。你的老师为了教育你而获得报酬。如果您对开始作业的信息不够了解,请再次向您的教师寻求帮助
  • 从你的问题中很不清楚你知道多少帕斯卡。这个网站并不是要从头开始教人们一门编程语言。假设您已经学会了某个点,并且您已经尝试了一些东西,但无法使其正常工作或坚持“下一步”是什么。您在问题中显示的唯一 Pascal 是 readln(4),这是无效的。您至少需要从正确的程序结构开始。如果您不确定有效的 Pascal 程序是什么样的,您需要看一本书或阅读教程。但我认为它是在你的课堂上教授的。

标签: binary permutation pascal


【解决方案1】:

您可能已经注意到“0 和 1 的所有排列”都是binary numbers

给定输入 3,你会输出这个:

000, 001, 010, 011, 100, 101, 110 and  111

它们是基数为 2 的数字 01234567

所以你这里有两个问题。

首先,您需要能够将十进制(以 10 为底)整数(例如 12)转换为二进制(二进制中的 12 为 1100)。

第二个问题是找出在哪里停止使用整数。如果给您输入2,那么您将输出00, 10, 11 并停止。那是从 0 到 3。给定 3 你输出 000, 001, 010, 011, 100, 101, 110, 111 - 那是从 0 到 7。

这里有模式吗?是的。如果您的输入是 X,请尝试找到一种方法来计算出最大的十进制数。

以 10 为底以 10 的幂计算,100 10 1
以 2 为底是 2 的幂,4 2 1
所以给定输入 5,我们知道将有 5 个1s 作为最后一个数字,11111。这个十进制数是多少?它是 25 -1,即 31。给定输入 3,我们知道它将是 111,即 7,或 23 -1

因此,给定任何输入 X,我们知道最后一个数字将连续 X 1s,并且 X 1s 将等于 2X -1

这很容易编程。只需创建一个函数MagicForumulaForCalculatingNumberGivenLength,它将一个整数作为输入(长度)并返回十进制整数:
function MagicForumulaForCalculatingNumberGivenLength(input:integer):integer; Result := (power(2, input) -1);

所以,现在我们知道了需要达到的十进制数 - 对于输入 5,它是 31。

我假设你可以这样循环:

readln(Input);

for I := 1 to MagicFormulaForCalculatingNumberGivenLength(Input);
    writeln(MagicFormulaForCalculatingBinaryGivenNumber(I));

所以现在唯一的问题是如何创建二进制数。 It's pretty easy - 我会给你伪代码中的代码,你可以自己把它写成pascal:

define DecimalNumberToBinaryString(Input:integer):string;

  SBinary: string;
  SBinaryRev: string;


  while Input > 0 do
    SBinary = SBinary + mod(Input,2)
    Input = div(Input,2)

 SBinaryRev = TextReverse(SBinary);

 return SBinary

【讨论】:

  • 如果我犯了错误,请评论。这是我的第一个 Pascal 答案,我对这种语言很陌生。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-17
  • 1970-01-01
  • 1970-01-01
  • 2019-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多