给出一个p*m 的矩阵,矩阵中存在这样一类数:
1该数为质数 (只能被1和它本身整除)
2该数上下左有相邻的数(如果存在的话)都为偶数
现在请你在矩阵中找出这一类数中最大的一个。
输入:
第一行两个整数口和m (1 ≤n.m ≤ 100)
接下来 口行,每行 m 个整数 (不超过1000),表示该矩阵。
输出:
一行一个整数,表示矩阵中存在的这一类数中最大的一个,若不存在这样的数,则输出-1。
样例输入:
5 5
1 4 7 10 2
8 5 2 5 11
0 8 10 4 9
1 0 6 23 8
10 5 2 8 9
样例输出:
23
贴出代码,方便阅读和调试
int a[1000][1000]; int b[1000]; 遍历时下标0~999,1000就越界了;e j k 的初值都为0(从1开始第一个浪费了),循环条件判断用<,不是<=;判断它四周的元素,要判断这个元素下标在0~n-1或者0~m-1之间,表示存在。以上都可能导致数组越界,修改后再试试。sort() 里面不要+1,能不能排序再说
#include<iostream>
#define MAXSIZE 50
using namespace std;
typedef int Elemtype;
// 定义顺序表结构体
typedef struct
{
Elemtype data[MAXSIZE];
int length;
}Sqlist;
//另一种结构体类型名方式*Sqlist
//typedef struct
//{
// Elemtype data[MAXSIZE];
// int length;
//}*Sqlist;
//创建顺序表思想:直接把有几个人复制到顺序表中,没有书上那种的原因是书上是用的数组
void CreateList(Sqlist *& s)//另一种结构体时void CreatList(Sqlist s)
{
int n;
cout << "输入共有几个人" << endl;
cin >> n;
cout << " 最开始的编号为:" << endl;
for (int i = 0; i < n; i++)
{
s->data[i] = i + 1;
cout << s->data[i] << " ";
s->length = n;
}
cout << endl;
}
//初始化线性表
void InitList(Sqlist *& L)//另一种结构体时void InitList(Sqlist L)
{
L = (Sqlist*)malloc(sizeof(Sqlist));
L->length = 0;
}
// 实现约瑟夫环的算法:1.(t+m-1)%s->length, 这个s->length表示的是每次出列后参数顺序表的长度都会变化,通过%来实现环的意思跟环队形有点类似
//2.每次出列一个后,所有后面的数据向前一位顶替原来出列的数,形成一个新的表
//3.一共循环s->length次
void Joseph(Sqlist * s,int m)
{
int t=0;
int i,j;
cout << "出列序列" <<endl;
for (i = s->length; i >= 1; i--)
{
t = (t + m - 1) % i;//关键
cout << s->data[t] << " ";
for ( j = t + 1; j <= i - 1; j++)//关键
{
s->data[j - 1] = s->data[j];
}
}
cout << endl;
}
//实现约瑟夫环的算法:1.(t+m-1)%s->length, 这个s->length表示的是每次出列后参数顺序表的长度都会变化,通过%来实现环的意思跟环队形有点类似
//2.每次出列一个后,所有后面的数据向前一位顶替原来出列的数,形成一个新的表
//3.一共循环s->length次
//void Joseph(Sqlist* s, int m)//另一种结构体时(Sqlist L)
//{
// int t = 0;
// cout << "出列序列" << endl;
// for (s->length; s->length>= 1; s->length--)
// {
// t = (t + m - 1) % s->length;//关键
// cout << s->data[t] << " ";
//
// for (int j = t + 1; j <= s->length - 1; j++)//关键
// {
// s->data[j - 1] = s->data[j];
// }
// }
// cout << endl;
//}
int main()
{
Sqlist *L;//另一种结构体时Sqlist L;
int m;
InitList(L);
CreateList(L);
cout << "想要报的m数:" << endl;
cin >> m;
Joseph(L, m);
return 0;
}