带状矩阵,对称矩阵,三角矩阵
2015-11-01 16:03
288 查看
对称矩阵:
#include <stdio.h> //重要公式*(p+((k*(k+1)/2)+p1)*sizeof(int))= *(p+((p1*(p1+1)/2)+k)*sizeof(int))
#include <stdlib.h>
int main()
{
int n,len,k,m,p1,i;
scanf("%d",&n);
printf("请输入询问次数:\n");
scanf("%d",&m);
len=n*(n+1)/2; //计算需要输入的个数
int *p=(int *)malloc(sizeof(int)*len); //分配空间
int *f;
f=p;
printf("请输入%d个数:\n",len);
for(; f<=p+(n*(n+1)/2-1)*sizeof(int); f+=sizeof(int))
{
scanf("%d",f); //读入该空间所分配的元素
}
printf("请输入要询问的数:\n");
//printf("%d\n",*p);
for(i=1; i<=m; i++)
{
scanf("%d%d",&k,&p1); //读入要查询的数的行,列数
if(k>=p1) //在对角线上或对角线以下
{
printf("%d\n",*(p+((k*(k+1)/2)+p1)*sizeof(int)));
}
else // 在对角线以上可以通过对角线以下查询 因为aij=aji
printf("%d\n",*(p+((p1*(p1+1)/2)+k)*sizeof(int)));
}
return 0;
}
三角矩阵:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,len,k,m,p1,i;
scanf("%d",&n);
printf("请输入询问次数:\n");
scanf("%d",&m);
len=n*(n+1)/2; //计算出三角矩阵所需输入元素个数
int *p=(int *)malloc(sizeof(int)*len); //申请动态内存
int *f;
f=p;
printf("请输入%d个数:\n",len);
for(; f<=p+(n*(n+1)/2-1)*sizeof(int); f+=sizeof(int))//读入数据
{
scanf("%d",f);
}
printf("请输入要询问的数:\n");
for(i=1; i<=m; i++)
{
scanf("%d%d",&k,&p1); //读入要查询的数在第几排,第几列
if(k<=p1) //上三角矩阵只有当k<=p1时有非0值
{
printf("%d\n",*(p+((n-k+1)*k+k*(k-1)/2+p1-k)*sizeof(int)));//根据地址查询
}
else //k>p1一定只有0值
printf("0\n");
}
return 0;
}
带状矩阵:
#include <stdio.h> //查询元素的值的公式为*(p+((2*b+1)*k-b+p1-k+b)*sizeof(int))
#include <math.h> //p为首地址,k为行数,p1为列数,b为带状矩阵半宽
#include <stdlib.h>
int main()
{
int n,len,k,m,p1,i,b;
scanf("%d %d",&n,&b);
printf("请输入询问次数:\n");
scanf("%d",&m);
len=(2*b+1)*n-2*b; //带状矩阵元素的计算公式
int *p=(int *)malloc(sizeof(int)*len);
int *f;
f=p;
printf("请输入%d个数:\n",len);
for(; f<=p+(len-1)*sizeof(int); f+=sizeof(int))
{
scanf("%d",f); //读入元素
}
printf("请输入要询问的数:\n");
//printf("%d\n",*p);
for(i=1; i<=m; i++)
{
scanf("%d%d",&k,&p1); // 询问的数在第几行,第几列
if(abs(k-p1)>=0) //当abs(k-p1)>=0时才有不为零的元素
{
printf("%d\n",*(p+((2*b+1)*k-b+p1-k+b)*sizeof(int)));//根据地址查询
}
else
printf("0\n");
}
return 0;
}
#include <stdio.h> //重要公式*(p+((k*(k+1)/2)+p1)*sizeof(int))= *(p+((p1*(p1+1)/2)+k)*sizeof(int))
#include <stdlib.h>
int main()
{
int n,len,k,m,p1,i;
scanf("%d",&n);
printf("请输入询问次数:\n");
scanf("%d",&m);
len=n*(n+1)/2; //计算需要输入的个数
int *p=(int *)malloc(sizeof(int)*len); //分配空间
int *f;
f=p;
printf("请输入%d个数:\n",len);
for(; f<=p+(n*(n+1)/2-1)*sizeof(int); f+=sizeof(int))
{
scanf("%d",f); //读入该空间所分配的元素
}
printf("请输入要询问的数:\n");
//printf("%d\n",*p);
for(i=1; i<=m; i++)
{
scanf("%d%d",&k,&p1); //读入要查询的数的行,列数
if(k>=p1) //在对角线上或对角线以下
{
printf("%d\n",*(p+((k*(k+1)/2)+p1)*sizeof(int)));
}
else // 在对角线以上可以通过对角线以下查询 因为aij=aji
printf("%d\n",*(p+((p1*(p1+1)/2)+k)*sizeof(int)));
}
return 0;
}
三角矩阵:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,len,k,m,p1,i;
scanf("%d",&n);
printf("请输入询问次数:\n");
scanf("%d",&m);
len=n*(n+1)/2; //计算出三角矩阵所需输入元素个数
int *p=(int *)malloc(sizeof(int)*len); //申请动态内存
int *f;
f=p;
printf("请输入%d个数:\n",len);
for(; f<=p+(n*(n+1)/2-1)*sizeof(int); f+=sizeof(int))//读入数据
{
scanf("%d",f);
}
printf("请输入要询问的数:\n");
for(i=1; i<=m; i++)
{
scanf("%d%d",&k,&p1); //读入要查询的数在第几排,第几列
if(k<=p1) //上三角矩阵只有当k<=p1时有非0值
{
printf("%d\n",*(p+((n-k+1)*k+k*(k-1)/2+p1-k)*sizeof(int)));//根据地址查询
}
else //k>p1一定只有0值
printf("0\n");
}
return 0;
}
带状矩阵:
#include <stdio.h> //查询元素的值的公式为*(p+((2*b+1)*k-b+p1-k+b)*sizeof(int))
#include <math.h> //p为首地址,k为行数,p1为列数,b为带状矩阵半宽
#include <stdlib.h>
int main()
{
int n,len,k,m,p1,i,b;
scanf("%d %d",&n,&b);
printf("请输入询问次数:\n");
scanf("%d",&m);
len=(2*b+1)*n-2*b; //带状矩阵元素的计算公式
int *p=(int *)malloc(sizeof(int)*len);
int *f;
f=p;
printf("请输入%d个数:\n",len);
for(; f<=p+(len-1)*sizeof(int); f+=sizeof(int))
{
scanf("%d",f); //读入元素
}
printf("请输入要询问的数:\n");
//printf("%d\n",*p);
for(i=1; i<=m; i++)
{
scanf("%d%d",&k,&p1); // 询问的数在第几行,第几列
if(abs(k-p1)>=0) //当abs(k-p1)>=0时才有不为零的元素
{
printf("%d\n",*(p+((2*b+1)*k-b+p1-k+b)*sizeof(int)));//根据地址查询
}
else
printf("0\n");
}
return 0;
}
相关文章推荐
- 利用引用和递归实现无限极分类
- iOS9 每日学习第7天:Contacts Framework
- 各大团队的初始化CSS代码
- haoj Climbing Worm 【水题】
- rs485特性、传输距离、接口防雷击、终端匹配电阻等分析
- java synchronized详解
- Oracle 12C -- 统一启动/关闭PDBs
- Linux系统用户与用户组介绍
- SQL的四种连接-左外连接、右外连接、内连接、全连接
- spring 与设计模式(创建型)之Builder模式
- uva401 Palindromes 字符串,模拟
- iOS nslog 使用 十六进制输出
- 对于zendframework2的路由配置的说明
- 重定向
- 接口返回值规则
- c语言之sizeof 与 strlen理解
- 树的子结构
- [HDOJ4006]The kth great number
- 如何提高工作效率,读《暗时间》总结
- java 为什么wait(),notify(),notifyAll()必须在同步方法/代码块中调用?