码迷,mamicode.com
首页 > 其他好文 > 详细

数算 2

时间:2016-02-28 22:53:50      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:

线性表

顺序表示

struct SeqList{
int n;
int MAXNUM;
DataType *element;
}
typedef struct SeqList *PSeqList;

 

- 不适合随机插入和删除
- 节省了空间但是操作的时间复杂度增加了

 

链接表示

数据域 指针域

struct Node;
typedef struct Node *PNode;
struct Node{
Datatype info;
PNode link;
}
typedef struct Node *LinkList;

- 存储密度小
- 查找的时间代价比较大
- 循环链表、双链表、循环双链

矩阵

行优先 列优先

- 稀疏矩阵:

三元组表示 伪地址表示

带辅助行向量的二元组表示 行-列表示

 

下面是一个数组解决Josephus问题的代码例子

技术分享
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <math.h>
 4 
 5 #define MAXNUM 30000
 6 
 7 int main(){
 8     int n, s, m;
 9     FILE *fp=fopen("input.txt", "r");
10     fscanf(fp,"%d %d %d", &n, &s, &m);
11     fclose(fp);
12     FILE *tp=fopen("output.txt", "w");
13     if (n>=MAXNUM) printf("n is too large!\n");
14     int a[MAXNUM];
15     for (int i=0;i<n;i++) a[i]=1;
16     int j=s%n-1, t=0,x;
17     for (int i=0;i<n;i++){
18         t=0;
19         x=m%(n-i);
20         if(x==0) x=n-i;
21         while (t<x){
22             if (a[j]==1) t++;
23          //   printf("%d %d %d\n",i,j,t);
24             j++;
25             if (j==n) j=0;
26         }
27         if(j==0){
28             a[n-1]=0;
29             fprintf(tp,"%d ",n);
30         }
31         else{
32             a[j-1]=0;
33             fprintf(tp,"%d ",j);
34         }
35     }
36     fclose(tp);
37     return 0;
38 }
View Code

 

数算 2

标签:

原文地址:http://www.cnblogs.com/iamliyou/p/5225822.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!