int min(int a , int b , int c) { int minNum = a < b ? a : b; minNum = minNum < c ? minNum : c; return minNum; } int findUglyNumber(int k) { int *pArray = new int[k + 1]; pArray[0] = 1; int* p3 , *p5 , *p7; p3 = p5 = p7 = pArray; int count = 0; int minNum; while(count < k) { count++; minNum = min( *p3 * 3 , *p5 * 5 , *p7 * 7); pArray[count] = minNum; //注意等号不能取,while中循环条件如果改成 *p3 * 3 < minNum 是错误的,这样会陷入死循环,使得minNum候选的几个候选值不再变化 while( *p3 * 3 <= minNum ) { p3++; } while( *p5 * 5 <= minNum) { p5++; } while( *p7 * 7 <= minNum) { p7++; } } int result = pArray[k]; delete[] pArray; return result; } void process() { int k; while(cin >> k) { int result = findUglyNumber(k); cout << result << endl; } } int main(int argc , char* argv[]) { process(); getchar(); return 0; } /* Main.c: In function 'findUglyNumber': Main.c:10:16: error: 'new' undeclared (first use in this function) int *pArray = new int[k + 1]; ^ Main.c:10:16: note: each undeclared identifier is reported only once for each function it appears in Main.c:10:20: error: expected ',' or ';' before 'int' int *pArray = new int[k + 1]; ^ Main.c:36:2: error: 'delete' undeclared (first use in this function) delete[] pArray; ^ Main.c:36:9: error: expected expression before ']' token delete[] pArray; ^ Main.c: In function 'process': Main.c:43:8: error: 'cin' undeclared (first use in this function) while(cin >> k) ^ Main.c:46:3: error: 'cout' undeclared (first use in this function) cout << result << endl; ^ Main.c:46:21: error: 'endl' undeclared (first use in this function) cout << result << endl; ^ Main.c: In function 'main': Main.c:53:2: warning: implicit declaration of function 'getchar' [-Wimplicit-function-declaration] getchar(); ^ */ |
Double click to view unformatted code.