解決:輸入一個n輸出以n為長度的二進位制數串的所有可能,並從小到大輸出所有
一開始看到這個問題時,會想到用0和1的排序,去尋找其中的規律,總結出表示式。
看似可行,但是在尋找規律時會發現每種情況之間都有一定的規律但不好用表示式表示出來,如:
n=3;
輸出結果為: 000;.
001;.
010;.
011;.
100;.
101;.
110;.
111;.
就可以看到第一列四個一組,有兩組;第二列兩個一組,四組;第三列,一個一組,八組;
但是發現了規律,要寫出關係式並且可以依次這樣輸出,是比較難的;
而且還要從小到大輸出 。就需要判斷大小,由陣列成的排序,無法比較它們的大小;
所以就需要轉變思路:既然要二進位制那麼就轉換為二進位制。
還可以得到規律:依舊以n=3;為例:
在最後的一個二進位制大小為12 ^2+ 1
這個數是最大數,最小為0;在 7 之前的數都可以輸出;
所以可以採用for語句,從小到大依次將十進位制數改為二進位制,這樣就同時滿足了從小到大輸出,和二進位制的 輸出;
大致程式碼如下:
n=3;的結果:
所以輸出正確 。
相關推薦
解決:輸入一個n輸出以n為長度的二進位制數串的所有可能,並從小到大輸出所有
一開始看到這個問題時,會想到用0和1的排序,去尋找其中的規律,總結出表示式。 看似可行,但是在尋找規律時會發現每種情況之間都有一定的規律但不好用表示式表示出來,如: n=3; 輸出結果為: 000;. 001;. 010;. 011;. 100;. 101;.
N的階乘:輸入一個正整數N,輸出N的階乘
輸入描述: 正整數N(0<=N<=1000) 輸出描述: 輸入可能包括多組資料,對於每一組輸入資料,輸出N的階乘 輸入例子: 4 5 15 輸出例子: 24 120 13076743680
劍指offer第32題JS演算法:輸入一個整數n,求從1到n這n個整數的十進位制表示中1出現的次數。例如輸入12,從1到12這些整數中包含1的數字有1,10,11和12,1一共出現了5次
題目:輸入一個整數n,求從1到n這n個整數的十進位制表示中1出現的次數。例如輸入12,從1到12這些整數中包含1的數字有1,10,11和12,1一共出現了5次 這是我某一次去朋友公司面試試水時出的面試題,結果給我五分鐘我寫了個for迴圈的方法,被狠狠鄙視/哭笑不得 結果回來後好奇就跟同事
Toposort Description 給出一個有向圖,判斷圖中是否存在迴路。 Input: 第1行:輸入圖的頂點個數N(1 ≤ N≤ 2,500)和C(圖的邊數,1 ≤ C ≤ 6,20
Toposort Description 給出一個有向圖,判斷圖中是否存在迴路。 Input: 第1行:輸入圖的頂點個數N(1 ≤ N≤ 2,500)和C(圖的邊數,1 ≤ C ≤ 6,200); 第2到C+1行中,第i+1行輸入兩個整數,分別表示第i條邊的起點和終點的編號
三種方式求: 輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼表示
情況 temp 進制數 二進制表示 pac print 類型 solution 方式 package com.example; public class Solution { /* * 轉化成2進制數計算 */ public int NumberOf1(int n) {
求接題目:輸入一個字符串輸出大小寫數字及其他字符的個數並逆序輸出
v2v SQ 逆序輸出 Go 大小寫 target clu 數字 targe 9wwwp0b5mw啥睪約抑汕丶防內肯勸《http://weibo.com/p/230927987600061628162048》 rvzxpb9vfd腫氨撩都幣渦綽腔腳備《http://wei
劍指Offer15:輸入一個連結串列,反轉連結串列後,輸出新連結串列的表頭
思路: 先將當前節點數對應的下一個節點數儲存下來tmp=pHead.next,然後將上個節點數last賦值給pHead.next(初始last為None)。當前節點pHead賦值給last(成為上一個節點),最後將下一個節點tmp賦值給pHead(成為當前結點)。 # -*- c
用C語言實現:輸入一個字元,則輸出它的大小或小寫字元。
題目: 用C語言實現:連續輸入一個大寫字元則輸出它的小寫字元;輸入它的小寫字元則輸出它的大寫字元;輸入數字則不輸出任何。 思路: 題目說輸入字元或數字,輸入的格式不一樣,所以不可以使用scanf()那麼可以用getchar()連續輸入多個字元. 既然是連續輸入,
網易筆試題:輸入一個正整數,若該數能用幾個連續正整數之和表示,則輸出所有可能的正整數序列。
解題思路: **找到數學規律。n以i為開頭的j個整數的和為i*j+j*(j-1)/2;判斷輸入的整數是否和計算結果相同。 如果相同則迴圈輸出以i為開頭的j個整數。 這個題目給我最大的啟示就是要學會用數學的方法來解決問題,在此之前我一直希望通過一種遞
11. 微軟面試題:輸入一個單向連結串列,輸出該連結串列中倒數第k個結點。連結串列的倒數第0個結點為連結串列的尾指標
題目:輸入一個單向連結串列,輸出該連結串列中倒數第k個結點。連結串列的倒數第0個結點為連結串列的尾指標。 分析: 單鏈表只能向後遍歷,不能向前遍歷,尾指標好找,倒數第K個不能從尾指標向前找。 倒的不好找,正的好找,我們只需要知道連結串列的總長度,就可以知道正數第幾個節點(
題目:輸入一個連結串列的頭結點,從尾到頭反過來輸出每個結點的值
既然想到了棧來實現這個函式,而遞迴本質上就是一個棧結構。於是很自然的又想到了用遞迴來實現。要實現反過來輸出連結串列,我們每訪問到一個結點的時候,先遞迴輸出它後面的結點,再輸出該結點自身,這樣連結串列的輸出結果就反過來了。
C語言程式設計:把一個分數分解成n個埃及分數 的和形式,n最小
1.題目分析:把真分數表示為埃及分數之和的形式,所謂的埃及分數是指分子為1的分數例如:7/8=1/2+1/3+1/24;要求用最少的埃及分數來表示解析:設a、b為互質正整數,a<b 分數a/b 可用以下的步驟分解成若干個單位分數之和:步驟一: 用b 除以a,得商數q1
c++入門:輸入一個字串,將其分段輸出,分段符為除字母和數字之外的符號。
輸出 輸入一個字串 樣例輸入 ad/adfa,123d?a1 樣例輸出 ad adfa 123d a1#include<iostream> #include<string.h>
面試題:輸入一個整數,輸出該整數二進位制中1的個數。
程式碼:C語言 //輸入一個整數,輸出該整數二進位制中1的個數。其中負數用補碼錶示。 //左移運算子是用來將一個數的各二進位制位全部左移若干位。相當於乘法運算,表示為"<<" //右移運算子是用來將一個數的各二進位制位全部右移若干位。相當於除
題目:輸入一個字串,打印出該字串中字元的所有排列。例如輸入字串abc,則輸出由字元a、b、c所能排列出來的所有字串abc、acb、bac、bca、cab和cba。
題目:輸入一個字串,打印出該字串中字元的所有排列。例如輸入字串abc,則輸出由字元a、b、c所能排列出來的所有字串abc、acb、bac、bca、cab和cba。 /** * */ pack
題目:輸入一個字串,輸出該字串中字元的所有組合。舉個例子,如果輸入abc,它的組合有a、b、c、ab、ac、bc、abc。
題目:輸入一個字串,輸出該字串中字元的所有組合。舉個例子,如果輸入abc,它的組合有a、b、c、ab、ac、bc、abc。 /* * AllQ.java 2011-10-23 * Copyri
陣列-字串_習題:輸入一個英文字串轉換其大小寫後輸出
# include <stdio.h># include <string.h>int main(void){ char str[50]; int i; printf("請輸入一個
shell練習:寫一個腳本實現如下功能:輸入一個數字,然後運行對應的一個命令。顯示命令如下:*cmd
else bin echo 數字 bar 一個 功能 ash elif shell練習:寫一個腳本實現如下功能:輸入一個數字,然後運行對應的一個命令。顯示命令如下:*cmd meau** 1--date 2--ls 3--who 4--pwd 當輸入1時,會運行date命
基於回溯法思想:輸入一個字串,按字典序打印出該字串中字元的所有排列。例如輸入字串abc,則打印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。
連結:https://www.nowcoder.com/questionTerminal/fe6b651b66ae47d7acce78ffdd9a96c7 來源:牛客網 import java.util.List; import java.util.Col
C#面試題:輸入一個長度100的數字字串,判斷是否能被7整除
輸入一個長度為100的數字字串,首字元不能是0,判斷是否能被7整除。 思路:把字串中各個位數字拿出來與7取餘,如果最後為0,表示可以整除,不為0表示不能整除。 例如:504:5%=5,50%7=1,14%7=0等於0。那麼504能被7整除。 21