数据结构实验之数组二:稀疏矩阵

2/10/2017来源:ASP.NET技巧人气:211

sdut原题链接

数据结构实验之数组二:稀疏矩阵 Time Limit: 5MS Memory Limit: 1000KB

PRoblem Description 对于一个n*n的稀疏矩阵M(1 <= n <= 1000),采用三元组顺序表存储表示,查找从键盘输入的某个非零数据是否在稀疏矩阵中,如果存在则输出OK,不存在则输出ERROR。稀疏矩阵示例图如下: 这里写图片描述

Input 连续输入多组数据,每组数据的第一行是三个整数mu, nu, tu(tu<=50),分别表示稀疏矩阵的行数、列数和矩阵中非零元素的个数,数据之间用空格间隔,随后tu行输入稀疏矩阵的非零元素所在的行、列值和非零元素的值,每组数据的最后一行输入要查询的数据k。

Output 输出查询结果,查找成功输出OK,找不到输出ERROR。

Example Input 3 5 5 1 2 14 1 5 -5 2 2 -7 3 1 36 3 4 28 36

Example Output OK

Hint

Author xam

以下为accepted代码

#include <stdio.h> #include <stdlib.h> #define MAXN 1004 struct node { int r; int l; int date; }; struct node1 { int mu; int nu; int tu; struct node ans[MAXN]; }; int main() { int i, x, flag; struct node1 *p; p = (struct node1 *)malloc(sizeof(struct node1)); while(scanf("%d %d %d", &p->mu, &p->nu, &p->tu) != EOF) { flag = 0; for(i = 0; i < p->tu; i++) { scanf("%d %d %d", &p->ans[i].r, &p->ans[i].l, &p->ans[i].date); } scanf("%d", &x); for(i = 0; i < p->tu; i++) { if(p->ans[i].date == x) { flag = 1; break; } } if(flag) printf("OK\n"); else printf("ERROR\n"); } return 0; } /*************************************************** User name: jk160630 Result: Accepted Take time: 0ms Take Memory: 108KB Submit time: 2017-02-03 19:53:01 ****************************************************/