反转链表
链表学习
多重集合
题目:给定一个最小的x,使集合A的元素(a+x)%m等于集合B
输入:
6 8
1 1 4 5 1 4
3 0 4 0 3 0
输出:
7
#include <stdio.h>
#include <iostream>
int main(){
int n,m;
scanf("%d %d",&n,&m);
int a[n];
int i;
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
int b[n],c[n];
int j;
for(j=0;j<n;j++){
scanf("%d",&b[j]);
}
int x=1,flag,t=0,k;
while(x>0 && k>0){
//printf("\n%d",x);
k=n;
for(j=0;j<n;j++){
c[j] = b[j];
}
for(i=0;i<n;i++){
flag=0;
// printf("%d.",a[i]);
for(j=0;j<k;j++){
if((a[i]+x)%m == c[j]){
//printf("%d,",c[j]);
for(t=j;t<n-1;t++){
c[t]=c[t+1];
}
k=k-1;
flag = 1;
break;
}
}
if(flag == 0){
break;
}
}
x++;
}
printf("%d",x-1);
return 0;
}
没验证时间复杂度和准确度…只是按输入输出写的