国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

網(wǎng)頁設計與制作教程西北工業(yè)大學廣州網(wǎng)站優(yōu)化步驟

網(wǎng)頁設計與制作教程西北工業(yè)大學,廣州網(wǎng)站優(yōu)化步驟,蘇州專業(yè)做網(wǎng)站公司電話,景安網(wǎng)站備案要多久題目部分 題目矩陣最大值難度難題目說明給定一個僅包含 0 和 1 的 N*N 二維矩陣,請計算二維矩陣的最大值,計算規(guī)則如下: 1. 每行元素按下標順序組成一個二進制數(shù)(下標越大越排在低位),二進制數(shù)的值就是該行…

題目部分

題目矩陣最大值
難度
題目說明給定一個僅包含 0 和 1 的 N*N 二維矩陣,請計算二維矩陣的最大值,計算規(guī)則如下:
1. 每行元素按下標順序組成一個二進制數(shù)(下標越大越排在低位),二進制數(shù)的值就是該行的值。矩陣各行值之和為矩陣的值。
2. 允許通過向左或向右整體循環(huán)移動每行元素來改變各元素在行中的位置。
比如: [1,0,1,1,1] 向右整體循環(huán)移動 2 位變?yōu)?[1,1,1,0,1],二進制數(shù)為 11101,值為 29。
[1,0,1,1,1] 向左整體循環(huán)移動 2 位變?yōu)?[1,1,1,1,0],二進制數(shù)為 11110,值為 30。
輸入描述1. 輸入的第一行為正整數(shù),記錄了 N 的大小,0 < N <= 20。
2. 輸入的第 2 到 N+1 行為二維矩陣信息,行內(nèi)元素邊角逗號分隔。
輸出描述矩陣各行之和的最大值。
補充說明
------------------------------------------------------
示例
示例1
輸入5
1,0,0,0,1
0,0,0,1,1
0,1,0,1,0
1,0,0,1,1
1,0,1,0,1
輸出122
說明第一行向右整體循環(huán)移動 1 位,得到本行的最大值 [1,1,0,0,0],二進制值為 11000,十進制值為 24。
第二行向右整體循環(huán)移動 2 位,得到本行的最大值 [1,1,0,0,0],二進制值為 11000,十進制值為 24。
第三行向左整體循環(huán)移動 1 位,得到本行的最大值 [1,0,1,0,0],二進制值為 10100,十進制值為 20。
第四行向右整體循環(huán)移動 2 位,得到本行的最大值 [1,1,1,0,0],二進制值為 11100,十進制值為 28。
第五行向右整體循環(huán)移動 1 位,得到本行的最大值 [1,1,0,1,0],二進制值為 11010,十進制值為 26。
因此,矩陣的最大值為 122。


解讀與分析

題目解讀

矩陣的每一行為一個二進制數(shù)字,通過左右移動,得到最大的二進制數(shù)。輸出所有最大二進制數(shù)之和。

分析與思路

1. 解析輸入矩陣的每一行,并轉換成對應的 10 進制數(shù)字;
2. 每一行的二進制數(shù)字每向右移動一位,相當于把這個數(shù)字(第一步中解析的數(shù)字,設為 value) 除以 2(取整),設為 valuePart1;然后再把?value % 2 的值(設為 modValue),乘以?2^{N-1},設為 valuePart2,計算 valuePart1 與 valuePart2 之和即為向右移動一位之后的結果。
3. 在第 2 步獲取的數(shù)字的基礎上,繼續(xù)右移。對于一個 N 位的二進制,向右移動 N 位之后就會回到初始值。因而,移動 (N -1) 次求出這 N 個數(shù)中的最大值即可。

4. 然后對每一行的最大值求和,并輸出。

時間復雜度為 O(n^{2}),空間復雜度為 O(n)。


代碼實現(xiàn)

Java代碼

import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;/*** 支持優(yōu)先級的隊列* * @since 2023.10.26* @version 0.1* @author Frank**/
public class MatrixMaxValue {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNext()) {String input = sc.nextLine();int count = Integer.parseInt( input );int maxValue = 0;for( int i = 0; i < count; i ++ ){input = sc.nextLine();maxValue += getMaxValueEachLine( count, input );}System.out.println( maxValue );}}private static int getMaxValueEachLine( int count, String input ){int sourceValue = parseStringValue( input );int maxValue = sourceValue;int curValue = sourceValue;// 右移 n - 1 次,求最大值for( int i = 0; i < count - 1; i ++ ){	   int partValue1 = curValue / 2;int partValue2 = (int) Math.round ( ( curValue % 2 ) * Math.pow( 2 , count - 1) );  // 使用round避免誤差,不會越界curValue = partValue1 + partValue2;if( curValue > maxValue ){maxValue = curValue;}}return maxValue;}private static int parseStringValue( String input ){int ret = 0;String[] binaryArr = input.split( "," );for( int i = 0; i < binaryArr.length; i ++ ){ret *= 2;ret += Integer.parseInt( binaryArr[i] );}return ret;}
}

在以上 Java 代碼中,Math.pow() 函數(shù)返回的是浮點數(shù),為了避免浮點數(shù)計算時出現(xiàn)誤差(大概率應該不會出現(xiàn)誤差),為了保證程序的正確性,最后使用了?Math.round() 函數(shù)。
Math.round() 返回 long 型數(shù)字,為了避免數(shù)據(jù)類型不匹配,使用強制數(shù)據(jù)類型轉換。因為 N 的最大值是 20,最大值?2^{20} - 1,比?10^{6}?稍大,此時不會越界。

JavaScript代碼

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void async function() {while (line = await readline()) {var count = parseInt( line );var maxValue = 0;for (var i = 0; i < count; i++) {line = await readline()maxValue += getMaxValueEachLine(count, line );}console.log(maxValue);}
}();function getMaxValueEachLine(count, input) {var sourceValue = parseStringValue(input);var maxValue = sourceValue;var curValue = sourceValue;// 右移 n - 1 次,求最大值for (var i = 0; i < count - 1; i++) {var partValue1 = parseInt( curValue / 2 );var partValue2 = Math.round((curValue % 2) * Math.pow(2, count - 1)); // 使用round,避免誤差,不會越界curValue = partValue1 + partValue2;if (curValue > maxValue) {maxValue = curValue;}}return maxValue;
}function parseStringValue(input) {var ret = 0;var binaryArr = input.split(",");for (var i = 0; i < binaryArr.length; i++) {ret *= 2;ret += parseInt(binaryArr[i]);}return ret;
}

(完)

http://aloenet.com.cn/news/30679.html

相關文章:

  • 如何做高大上的網(wǎng)站 知乎企業(yè)營銷網(wǎng)站建設系統(tǒng)
  • 企業(yè)網(wǎng)站ppt怎么做百度搜索資源平臺官網(wǎng)
  • 如何做搜索引擎網(wǎng)站百度網(wǎng)站怎么提升排名
  • 什么是網(wǎng)站維護中營銷運營主要做什么
  • 互聯(lián)網(wǎng)行業(yè)分為哪幾類排名優(yōu)化方法
  • 提交網(wǎng)站汕頭seo推廣
  • 微信公眾號平臺網(wǎng)站開發(fā)百度天眼查公司
  • 用ps怎樣做網(wǎng)站文字logo廣豐網(wǎng)站seo
  • 個人怎么做貸款網(wǎng)站求購買鏈接
  • 網(wǎng)站權重高+做別的關鍵詞百度應用下載安裝
  • 學做效果圖網(wǎng)站有哪些軟件有哪些網(wǎng)站建站方式有哪些
  • 有沒有做數(shù)學題掙錢的網(wǎng)站艾滋病多久可以查出來
  • 網(wǎng)站建設網(wǎng)站軟件有哪些方面深圳網(wǎng)站建設公司
  • 湖南住房和城鄉(xiāng)建設廳網(wǎng)站首頁優(yōu)化網(wǎng)站怎么真實點擊
  • 男女做a視頻網(wǎng)站seo1搬到哪里去了
  • wordpress 網(wǎng)站日志天門seo
  • 福建省住建廳建設網(wǎng)站競價培訓班
  • 手機網(wǎng)站開發(fā)學習免費單頁網(wǎng)站在線制作
  • 可以用足球做的游戲視頻網(wǎng)站好的競價賬戶托管外包
  • 常規(guī)做網(wǎng)站要在工信部認證嗎網(wǎng)站建立
  • 適合個人做的網(wǎng)站有哪些東西嗎百度權重批量查詢
  • 英語機構網(wǎng)站建設方案足球進球排行榜
  • 做網(wǎng)站的困難windows優(yōu)化大師會員兌換碼
  • 做網(wǎng)站學什么專業(yè)防惡意點擊軟件
  • 南寧網(wǎng)站建設設計制作今日最新抗疫數(shù)據(jù)
  • 做代購有哪些網(wǎng)站有哪些seo優(yōu)化培訓課程
  • 做聊天網(wǎng)站的視頻教程怎么進行網(wǎng)站關鍵詞優(yōu)化
  • wordpress主題如何修改seo優(yōu)化設計
  • 做網(wǎng)站需要注意的點抖音seo供應商
  • 山西成寧做的網(wǎng)站運營推廣渠道有哪些