下三角矩阵

时间限制: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<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
int a[1005][1005]; //记录矩阵
int c[1005]; // 记录每一行最后一个非零的数所在位置
int main()
{int n, i, j, k;while(~scanf("%d",&n)){memset(c,0,sizeof(c));for(i = 1; i <= n; i++){for(j = 1; j <= n; j++){scanf("%d",&a[i][j]);if(a[i][j])c[i] = j;  //记录每一行最后一个非零的数所在位置}}int ans = 0; //交换次数for(i = 1; i <= n; i++) //从第一行开始找{int pos = 0;for(j = i; j <= n; j++)  //找与当前行最邻近的满足条件的行{if(c[j] <= i){pos = j;break;}}for(k = pos; k > i; k--){swap(c[k],c[k-1]);ans++;}}printf("%d\n",ans);}return 0;
}

NYOJ练习题 下三角矩形 (模拟)相关推荐

  1. Python九九乘法表(矩形、上三角、下三角)

    一.矩形 实质上这两种方法是一样的,只不过方法一中s的作用相当于方法二中end='  '的作用 #方法一 for i in range(1,10):for j in range(1,10):print ...

  2. Delphi下利用WinIo模拟鼠标键盘详解

    本文最早在编程论坛上发表,文章地址:http://programbbs.com/bbs/view12-17207-1.htm,相关文件可以在上述地址的页面中下载.转载时请注明出处. 前言 一日发现Se ...

  3. 很好的理解梯度 散度 旋度 下三角运算 费曼物理讲义

    很好的理解梯度 散度 旋度 下三角运算  费曼物理讲义 https://www.zhihu.com/question/24074028/answer/26657334 英文版本 https://www ...

  4. linux下IO口模拟I2C的一些总结

    2019独角兽企业重金招聘Python工程师标准>>> 以前一直在用I2C接口,因为总是有线程的例子就一直没有去深入的了解,今天分析了一下在linux下通用GPIO模拟I2C的程序. ...

  5. java 回车 按钮事件,java--键盘事件类,按下回车则模拟鼠标

    import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import javax.swing.JButton; import ...

  6. 杨辉三角(下三角或者等腰三角)

    //杨辉三角(下三角或者等腰三角) #include <stdio.h> int fun(int i,int j) { if(i==j||1==j) return 1; else retu ...

  7. linux下使用TC模拟弱网络环境

    linux下使用TC模拟弱网络环境 模拟延迟传输简介 netem 与 tc: netem 是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块.该功能模块可以用来在性能良好的局域网中,模拟 ...

  8. 当前超级计算机的应用方兴未艾,四川省若尔盖县高三下学期语文模拟卷(五)

    四川省若尔盖县高三下学期语文模拟卷(五) 姓名:________ 班级:________ 成绩:________ 一.选择题 (共3题:共6分) 1. (2分)(2017·海南模拟) 下列各句中划线成 ...

  9. 【数据结构算法】二:上三角、下三角中求数组地址--【下标的计算】

    一.三角矩阵的概念 以主对角线划分三角矩阵有下三角矩阵和上三角矩阵 下三角矩阵:矩阵(除主对角线)的上三角部分的值均为一个常数C或者0 上三角矩阵:与下三角矩阵相反 图示:(图中蓝色主对角线部分元素( ...

最新文章

  1. Django - - 进阶 - - 同源策略和跨域解决方案
  2. 0x000000f怎么修复 win10_win10无法启动也能进安全模式?用这个方法就OK
  3. spring中@Value的注解解析
  4. 一起谈.NET技术,通过16道练习学习Linq和Lambda
  5. jQuery多库共存问题解决方法
  6. 数据库对数字不限长度的冒泡排序
  7. 线程池是如何复用的?
  8. 量子计算机能让科技发展有多快,量子计算机有多快?
  9. leetcode算法题解(Java版)-16-动态规划(单词包含问题)
  10. Cilium架构:提供并透明地保护应用程序工作负载之间的网络连接和负载平衡
  11. linux数据库redis主从配置,redis介绍及主从配置
  12. pdf文件旋转后怎么完整保存
  13. 鹰信 UC 登录状态同步方法
  14. Oracle EBS 笔记8
  15. 教孩子学习乘法和除法,我算是绞尽脑汁了
  16. 常用的分析管理工具方法【整理】
  17. java面试题----选择题02
  18. 2021长安“战疫”网络安全卫士守护赛 misc部分writeup
  19. 用户聊天记录存储表(亿级别)优化及分片策略
  20. vbs版的语音报时程序

热门文章

  1. 用JScript.net写.net应用程序(转)
  2. webpack加载postcss,以及autoprefixer的loader
  3. php pdo预处理语句与存储过程
  4. IOS 应用官方接口地址
  5. 在项目开始前,为客户做专门的“需求变更流程”培训是必要的
  6. Posterior decompression
  7. extra energy theory
  8. HOW TO ORDER LFT
  9. we need to have frequent contact for relationships for transferring from aca to career
  10. target evaluations