最大最小表示法模板

it2022-05-05  99

int getmin(int n) { int i = 0,j = 1,k = 0,t; //表示从i开始k长度和从j开始k长度的字符串相同 while(i < n && j < n && k < n) { t = a[(i+k)%n] - a[(j+k)%n]; //t用来计算相对应位置上那个字典序较大 if(!t) k++;//字符相等的情况 else { if(t > 0) i += k+1;//i位置大,最大表示法: j += k+1 else j += k+1;//j位置大,最大表示法: i += k+1 if(i == j) j++; k = 0; } } return i >j ?j :i; } int getmax(int n) { int i = 0,j = 1,k = 0,t; while(i < n && j < n && k < n) { t = a[(i+k)%n] - a[(j+k)%n]; if(!t) k++; else { if(t > 0) j+= k+1; else i+= k+1; if(i == j) j++; k = 0; } } return i >j ?j :i; }

 


最新回复(0)