NYOJ練習題 下三角矩形 (模擬)

2021-09-30 10:36:55 字數 841 閱讀 9544

時間限制:

1000 ms  |  記憶體限制:

65535 kb

描述 給定乙個由0和1組成的矩陣。只允許交換相鄰的兩行,要把矩陣轉化成下三角矩陣(主對角線上方的元素都是0),最少需要交換幾次?輸入的矩陣保證總能轉化成下三角矩陣。

輸入

多組測試資料。

每組測試資料第一行為乙個整數n(1 <= n < 1000),表示矩陣的大小為n*n;

接下來n行,每行有n個數表示這個矩陣。

輸出輸出最小需要交換的次數,單獨佔一行。

樣例輸入

3

0 0 1

1 0 0

0 1 0

樣例輸出

2
分析可知:構成下三角矩陣實際上只與每行的最後乙個非零位置有關。

先找出矩陣中每行的最後乙個非零位置,然後根據最後乙個非零位置將其移動到對應的位置即可,從第一行開始,每一次移動符合條件的最鄰近的一行,之後此行將不再考慮,記錄移動的次數即為最少的次數。

#include#include#includeusing namespace std;

int a[1005][1005]; //記錄矩陣

int c[1005]; // 記錄每一行最後乙個非零的數所在位置

int main()

} int ans = 0; //交換次數

for(i = 1; i <= n; i++) //從第一行開始找

}for(k = pos; k > i; k--)

}printf("%d\n",ans);

} return 0;

}

演算法競賽練習題 三角螺旋陣

方陣的主對角線之上稱為 上三角 請你設計乙個用於填充n階方陣的上三角區域的程式。填充的規則是 使用1,2,3 的自然數列,從左上角開始,按照順時針方向螺旋填充。例如 當n 3時,輸出 1 2 3 6 4 5當n 4時,輸出 1 2 3 4 9 10 5 8 6 7當n 5時,輸出 1 2 3 4 5...

楊輝三角 回形數 複製 賦值練習題

使用二維陣列列印乙個10行楊輝三角 public static main string args 3 遍歷二維陣列 for int i 0 i yanghui.length i 從鍵盤輸入乙個整數 1 20 則以該數字為矩陣的大小,把1,2,3 n n 的數字按照順時針螺旋的形式填入其中。例如 輸入...

二項式 楊輝三角 藍橋杯練習題目

題目 如 圖1.png 我國南宋數學家楊輝1261年所著的 詳解九章演算法 一書裡就出現了。其排列規律 11 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 如下的程式,用來建立n行的楊輝三角形...