/* Різниця множин (x - y) */ void printDiff(int *x, int nX, int *y, int nY) { printf("\nРізниця множин:\n { "); for (int k = 0; k < nX; k++) { if (!have(y, x[k], nY)) printf("%d ", x[k]); } printf("}"); }
/* Доповнення до множини */ void printInverse(int *x, int nX, int *u, int nU) { printf("\nДоповнення множини:\n { "); for (int k = 0; k < nU; k++) { if (!have(x, u[k], nX)) printf("%d ", u[k]); } printf("}"); }
/* Перетин множин */ void printIntersect(int *x, int nX, int *y, int nY) { printf("\nПеретин множин:\n { "); for (int k = 0; k < nX; k++) { if (have(y, x[k], nY)) printf("%d ", x[k]); } printf("}"); }
int *kinds(char *input,int start,int end, int *rsize){ int *temp=NULL,i,j,k,*temp1,*temp2,a,b,t,all=0,sum,first=0; temp=(int *)malloc(sizeof(int)); sum=have(input,start,end,&first); if(sum==0){ temp[0]=first; *rsize=1; return temp; } for(i=start;i<=end;i++){ if(input[i]=='+' || input[i]=='-' || input[i]=='*'){ temp1=kinds(input,start,i-1, &a); temp2=kinds(input,i+1,end,&b); t=a*b; temp=(int *)realloc(temp,sizeof(int)*(all+t)); for(j=0;j<a;j++) for(k=0;k<b;k++){ if(input[i]=='+'){ temp[all]=temp1[j]+temp2[k]; }else if(input[i]=='-'){ temp[all]=temp1[j]-temp2[k]; }else if(input[i]=='*'){ temp[all]=temp1[j]*temp2[k]; } all++; } } } *rsize=all; return temp; }
string minWindow(string s, string t) { int m = s.size(), n = t.size(); vector<int> need(128,0); for(char c : t) ++need[c]; int needCnt = n; vector<int> have(128,0); int idx = 0; int minLen = m + 1; string res; for(int i = 0, startIdx = 0; i < m; ++i) { char c = s[i]; ++have[c]; if(have[c] <= need[c]) --needCnt; while(needCnt == 0) { if(i - startIdx + 1 < minLen) { idx = startIdx; minLen = i - startIdx + 1; } char c = s[startIdx]; --have[c]; if(have[c] < need[c]) ++needCnt; ++startIdx; } } return minLen == m + 1 ? "" : s.substr(idx, minLen); }
/* Об'єднання множин */ void printUnion(int *x, int nX, int *y, int nY) { printf("\nОб`єднання множин:\n { "); for (int k = 0; k < nX; k++) { printf("%d ", x[k]); } for (int k = 0; k < nY; k++) { if (!have(x, y[k], nX)) printf("%d ", y[k]); } printf("}"); }
int* inputSet(int &n, int* universal, int sizeUniv) { printf("\nВведіть кількість елементів множини: "); scanf("%d", &n); int *set = (int*)malloc(n * sizeof(int)); int in; for (int k = 0; k < n; k++) { printf("Введіть елемент №%d: ", k); scanf("%d", &in); if (have(set, in, k)) { printf("Елемент зі значенням %d уже існує, повторіть введення!\n", in); k--; continue; } else if (universal && !have(universal, in, sizeUniv)) { printf("Елемент %d не знайдено в універсалі, повторіть введення!\n", in); k--; continue; } else { set[k] = in; } } return set; }
QString Capabilities::createSpecialResponse( bool tls ) const { QStringList result; if ( tls ) result.push_back( QLatin1String("STARTTLS") ); result += saslMethodsQSL(); if ( have( "PIPELINING" ) ) result.push_back( QLatin1String("PIPELINING") ); if ( have( "8BITMIME" ) ) result.push_back( QLatin1String("8BITMIME") ); if ( have( "SIZE" ) ) { bool ok = false; unsigned int size = 0; if ( !mCapabilities[ QLatin1String("SIZE") ].isEmpty() ) mCapabilities[ QLatin1String("SIZE") ].front().toUInt( &ok ); if ( ok && !size ) result.push_back( QLatin1String("SIZE=*") ); // any size else if ( ok ) result.push_back( QString::fromLatin1("SIZE=%1").arg( size ) ); // fixed max else result.push_back( QLatin1String("SIZE") ); // indetermined } return result.join( QLatin1String(" ") ); }