數碼管程式設計題 程式設計練習題(100)

2021-08-29 14:07:47 字數 1337 閱讀 8748

目錄

問題:分析:

c++**:

總結:7.【問題描述】

液晶數碼管用七筆阿拉數字表示的十個數字,把橫和豎的一 個短劃都稱為一筆,即7有3筆,8有7筆等。對於十個數字一種排列,要做到兩相鄰數字都可以由另乙個數字加上幾筆或減去幾筆組成,但不能又加又減。比如 7→3是允許的,7→2不允許。任意輸入一組數,判斷是否符合上述規則,注意,1在右邊。

【輸入形式】

每行輸入乙個0~9的排列,數字之間用空格分隔,以-1作為輸入結束

【輸出形式】

輸出yes或no

【樣例輸入】

4 1 0 7 3 9 5 6 8 2

3 5 1 6 2 7 9 0 4 8

-1

【樣例輸出】

yes

no

方法1:可以把數碼管的七筆進行編號,然後使用二維數字儲存0-9十個數字所使用的數碼管編號,如果兩個數字編號交集等於其中乙個數字的編號,則可以增幾筆或減幾筆變換,例如數字a用了編號1、3、5、7,數字b用了編號3、5,則

方法2:方法1理論上可以實現,但是會比較麻煩,每兩個相鄰的數都要進行對比,也就是要迴圈7*(n-1)次,其中n為0-9乙個排列中所含數的個數。所以我又想到了乙個方法,將允許進行轉換的數字存入乙個key-value對中,如果可以通過key找到對應的value(相鄰的數),則表示允許轉換,但是這個怎麼儲存呢?在map中key是不允許有重複的,但是我們可以使用multimap,這個函式操作就不細說了。這裡我使用另一種簡單的方法,使用乙個二維陣列map_array[10][10],能相互轉換的數字對應位置存1,不允許相互轉換的存0。這樣就可以在o(1)的時間內檢視兩個數字是否允許轉換,相對於multimap來說就是造成了空間的浪費,但是相對於multimap來說陣列的速度是要快的。

#include using namespace std;

int main()

, //0

, //1

, //2

, //3

, //4

, //5

, //6

, //7

, //8

//9};

int number[10];

bool flag = true;

while(1)

for(int i=1; i<10; i++)

}if(false == flag)

{cout << "no" 這道題不難,就是將對映表做出來花了點時間。仔細想想這道題也挺有意思。

數碼管程式設計題 程式設計練習題(100)

目錄 問題 分析 c 總結 7.問題描述 液晶數碼管用七筆阿拉數字表示的十個數字,把橫和豎的一 個短劃都稱為一筆,即 有 筆,有 筆等。對於十個數字一種排列,要做到兩相鄰數字都可以由另乙個數字加上幾筆或減去幾筆組成,但不能又加又減。比如 是允許的,不允許。任意輸入一組數,判斷是否符合上述規則,注意,...

python程式設計題 python程式設計練習題目

github上面的乙個專案,分為level1,level2,level3 三個等級的難度。練習題1 隨機生成一列資料,畫出這些資料的分布 概率密度曲線,以及進行歸一化 標準化之後的分布 概率密度曲線。解答 歸一化 標準化 中心化 import numpy as np import matplotli...

python程式設計題 python程式設計練習題

p5 判斷閏年 輸入乙個年份,判斷其是否為閏年。非世紀年 不能被100整除的年份 能被4整除的為閏年。如2004年就是閏年,1999年不是閏年 世紀年 能被100整除的年份 能被400整除的是閏年。如2000年是閏年,1900年不是閏年 year int input 輸入乙個年份 if year 4...