0
点赞
收藏
分享

微信扫一扫

Python将Excel文件转换为JSON格式

王小沫 2024-10-31 阅读 13
数据结构

这道题主要是小细节要把握,实际难度不大
机翻
在这里插入图片描述

1、条件准备

表大小,输入数据数

#include <iostream>
#include<vector>
#include<cmath>
using namespace std;
#define endl '\n'

int Size,n;

2、主函数

先输入数据,用isprime判断是否为质数直到Size变为质数。初始化表H
然后循环调用judge判断每个元素应输出什么,最后单独判断一次不输出空格

int main()
{
  std::ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin>>Size>>n;
  while(isprime(Size)==0)
  Size++;
  vector<int> H(Size,-1);
  while(--n)
  {
    judge(H);
    cout<<' ';
  }
  judge(H);
  return 0;
}

3、isprime函数

试除法判断质数

bool isprime(int num)
{
  if(num<2)return false;
  for(int i=2;i<=num/i;i++)
   if(num%i==0)return false;
    return true;
}

4、judge函数

输入值,算起始位置,没插过则插入。
否则用二次探测法,bios为正的偏置,f判断是否要输出-
如果探测次数超过了表的大小则取消探测。

void judge(vector<int>& H)
{
  int cur;cin>>cur;
    int idx=cur%Size;
    if(H[idx]==-1)
    {
      H[idx]=cur;cout<<idx;
      return;
    }
    int bios=1;int f=0;
    while(1)
    {
      if(sqrt(bios)>=Size)break;
      if(H[(idx+bios)%Size]==-1)
      {
        H[(idx+bios)%Size]=cur;cout<<(idx+bios)%Size;
        f=1;
        break;
      }
     bios=(sqrt(bios)+1);bios*=bios;
    }
    if(!f)cout<<'-';
}

5、总结

这道题难度不大,主要是处理小细节,只有正增量,什么时候不探测
完整代码如下

#include <iostream>
#include<vector>
#include<cmath>
using namespace std;
#define endl '\n'

int Size,n;

bool isprime(int num)
{
  if(num<2)return false;
  for(int i=2;i<=num/i;i++)
   if(num%i==0)return false;
    return true;
}
void judge(vector<int>& H)
{
  int cur;cin>>cur;
    int idx=cur%Size;
    if(H[idx]==-1)
    {
      H[idx]=cur;cout<<idx;
      return;
    }
    int bios=1;int f=0;
    while(1)
    {
      if(sqrt(bios)>=Size)break;
      if(H[(idx+bios)%Size]==-1)
      {
        H[(idx+bios)%Size]=cur;cout<<(idx+bios)%Size;
        f=1;
        break;
      }
     bios=(sqrt(bios)+1);bios*=bios;
    }
    if(!f)cout<<'-';
}
int main()
{
  std::ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin>>Size>>n;
  while(isprime(Size)==0)
  Size++;
  vector<int> H(Size,-1);
  while(--n)
  {
    judge(H);
    cout<<' ';
  }
  judge(H);
  return 0;
}

举报

相关推荐

0 条评论