博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2019年第三周作业
阅读量:6163 次
发布时间:2019-06-21

本文共 2549 字,大约阅读时间需要 8 分钟。

判断上三角矩阵

1.实验代码

复制代码

1 #include
2 #include
3 int main(int argc, char *argv[]) 4 { 5 6 int n; 7 int T; 8 int a[10][10]; 9 scanf("%d", &T);10 int *b= (int*)malloc(sizeof(int)*T);11 int i,c,j;12 13 for (i = 0; i < T; i++)14 {15 scanf("%d", &n);16 17 for (j = 0; j < n; j++)18 for (c = 0; c < n; c++)19 {20 scanf("%d", &a[j][c]);21 }22 23 for (j = 1; j < n; j++)24 {25 for (c=0; c< n;c++)26 {27 if (c < j&&a[j][c] == 0)28 b[i] = 0;29 if(c

复制代码

运行截图

设计思路:

1.先用T来储存有几个三角矩阵.

2.输出矩阵,并且运用双循环和二维数组来判断小于i,j的数组元素是否为0.

3.最后判断该是否为三角矩阵.

本题调试过程及解决方案:没得问题.

流程图:

1579713-20190315142630558-1251139859.png

求最大子数组之和

1.实验代码

复制代码

#include 
#include
int main(int argc, char *argv[]){ int i, n, max; FILE *fp; if ((fp = fopen("D:\\编程\\C\\代码\\PYozo", "a+")) == NULL) { exit(0); } fscanf(fp, "%d", &n); //数组中有几个元素 int *p = (int*)malloc(sizeof(int)*n); //用动态分配储存数组里的元素 char ch; for (i = 0; i < n; i++) { fscanf(fp, "%d%c", &p[i], &ch); } int j=0; int *sum = (int*)malloc(sizeof(int)*n); int *arr = (int*)malloc(sizeof(int)*n); sum[0] = p[0]; max = sum[0]; arr[0]=sum[0]; for (i = 0; i < n; i++) { if (sum[i] >= 0&&i!=0) //如果sum大于0则继续加,因为sum大于0有可能还会继续增加. { sum[i] = sum[i - 1] + p[i]; arr[j] = p[i]; j++; if (sum[i] > max) max = sum[i]; } if (sum[i] < 0) //如果sum小于0就不用管,因为这肯定不是最大的数. { j = 0; sum[i] = p[i]; if (sum[i] > max) { max = sum[i]; arr[j]=sum[i]; } sum[i + 1] = p[i + 1]; sum[i] = 0; } } fprintf(fp,"\n"); if(max>0) { i=0; sum[0]=0; while(1) { sum[0]+=arr[i]; i++; if(sum[0]==max) break; } } for (j = 0; j

复制代码

运行截图
1579713-20190315142725969-1741554624.png
1579713-20190315142752422-1728334185.png
1579713-20190315142803995-1234880449.png
1579713-20190315142813240-161297568.png

设计思路:

1.运用malloc动态分配来创造一个数组p.

2.在从下标0开始加,若是全为负数先将结果储存到数组里面在则会判断谁为最大负数,若是和为正数,那么它有可能增加也可能变少,通过判断将其保存在一个变量中,若和为负数,则将当前下标数组sum清0直接进行下次的递增.

本题调试过程及解决方案:

1.一开始想到的解题方式是想用枚举法的,但是听了dalao给我说了这道题涉及的算法,才写出了简便的代码。2.并且我也没有把和若为负数的情况考虑周到,使得显示出来的答案一直为16或者17,随即便找到了未将sum[i]重新赋值为0导致sum并没有从一个新的下标开始加.3.同时我也没考虑到若数组全为负数怎么办,到后面尝试了一下发现只要加两条代码sum[i+1]=p[i+1];sum[i]=0;即可。

二:学习进度:

1579713-20190315142829456-1207687950.png

学习感悟:

发现知道的越多不懂的也就越多,所以要更加努力的学习

转载于:https://www.cnblogs.com/txtnb/p/10536867.html

你可能感兴趣的文章
Windows 8 开发之设置合约
查看>>
闲说HeartBeat心跳包和TCP协议的KeepAlive机制
查看>>
MoSQL
查看>>
Hibernate多对一外键单向关联(Annotation配置)
查看>>
《CLR via C#》读书笔记 之 方法
查看>>
设计模式:组合模式(Composite Pattern)
查看>>
ContentValues 和HashTable区别
查看>>
LogicalDOC 6.6.2 发布,文档管理系统
查看>>
给PowerShell脚本传递参数
查看>>
实战2——Hadoop的日志分析
查看>>
利用FIFO进行文件拷贝一例
查看>>
Ecshop安装过程中的的问题:cls_image::gd_version()和不支持JPEG
查看>>
resmgr:cpu quantum等待事件
查看>>
一个屌丝程序猿的人生(六十六)
查看>>
Java 编码 UTF-8
查看>>
SpringMVC实战(注解)
查看>>
关于静态属性和静态函数
查看>>
进程的基本属性:进程ID、父进程ID、进程组ID、会话和控制终端
查看>>
spring+jotm+ibatis+mysql实现JTA分布式事务
查看>>
MyBatis启动:MapperStatement创建
查看>>