Exemple #1
0
 int minimumTotal(vector<vector<int> > &triangle) {
     // Note: The Solution object is instantiated only once and is reused by each test case.
     const int maxN = 1000000000;
     int n = triangle.size();
     if (n<=0)
         return 0;
     vector<int> rlt(n,0);
     rlt[0] = triangle[0][0];
     int last, cur;
     for (int i=1; i<n; i++){
         last = rlt[0];
         rlt[0]=rlt[0]+triangle[i][0];
         for (int j=1; j<i; j++){
             cur = rlt[j];
             rlt[j] = (cur<=last?cur:last) + triangle[i][j];
             last = cur;
         }
         rlt[i] = last+triangle[i][i];
     }
     int min = rlt[0];
     for (int i=1; i<n; i++)
         if (rlt[i]<min)
             min = rlt[i];
     return min;
 }
Exemple #2
0
FibMatrix power(FibMatrix a, int p) {
	FibMatrix rlt(true);
	for(; p; p >>= 1) {
		if(p & 1) { rlt *= a; }
		a *= a;
	}
	return rlt;
}
/*
    A writer acquires a write-lock, a reader tries to lock.
    the writer releases the lock, the reader gets the lock
*/
void tst_QSystemReadWriteLock::readLockBlockRelease()
{
    bool print = false;
    QSystemReadWriteLock testLock("Viper", QSystemReadWriteLock::Create);
    if (print)
        qDebug() << "Main Thread: About to lock for writing";
    testLock.lockForWrite();
    if (print)
        qDebug() << "Main Thread: After lock for writing";
    readThreadStarted = false;
    readThreadDone = false;

    ReadLockThread rlt(print);
    rlt.start();
    QTest::qSleep(1000);
    QVERIFY(readThreadStarted);
    QVERIFY(!readThreadDone);

    testLock.unlock();
    if (print)
        qDebug() << "Main Thread:  After unlock(write)";
    rlt.wait();
    QVERIFY(readThreadDone);
}