Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
我的错误是 ---- 打成了 --- ft阿 为什么不是pe而是waIn Reply To:我的程序那位帮出个数据测测。很简单的递归阿 Posted by:first at 2005-12-29 22:09:11 > #include <iostream> > #include <algorithm> > #include <vector> > using namespace std; > int price[100]; > int type[10]; > int result[10]; > int appear[100]; > int resappear[100]; > int tempapp[100]; > int n; > int maxtype; > int ind; > int resind; > int maxprice; > bool tie; > void print(int); > void work(int, int); > vector <int> input; > int main() > { > int p; > while(cin>>p) > { > n = 0; > while(p) > { > price[n ++] = p; > scanf("%d",&p); > } > sort(price, price + n); > scanf("%d",&p); > input.clear(); > while(p) > { > input.push_back(p); > scanf("%d",&p); > } > for(int num = 0; num < input.size(); num ++) > { > p = input[num]; > ind = 0; > maxtype = 0; > resind = 0; > tie = false; > memset(appear, 0, sizeof(appear)); > memset(type, 0, sizeof(type)); > int i, j; > for( i = 0; i <= 4; i ++) > { > if( p - i*price[0] >= 0) > { > for( j = 0; j < i; j ++) > { > type[ind ++] = 0; > appear[0] ++; > } > work(p - i*price[0], 1); > for( j = 0; j < i; j ++) > { > appear[0] --; > ind --; > } > } > > } > print(p); > } > } > return 0; > } > > void work(int p, int nth) > { > int i, j; > if( ind > 4) > return ; > if(p == 0) > { > int max = 0; > int tempprice = 0; > memcpy( tempapp, appear, sizeof(appear) ); > for( i = 0; i < ind; i ++) > { > if( tempapp[type[i]] > 0 ) > { > max ++; > tempprice = tempprice > price[type[i]] ? tempprice : price[type[i]]; > tempapp[type[i]] = 0; > } > } > if( max > maxtype ) > { > memcpy(result, type, sizeof(type)); > memcpy(resappear, appear, sizeof(appear)); > resind = ind; > maxprice = tempprice; > maxtype = max; > tie = false; > } > else if( max == maxtype ) > { > if( ind < resind ) > { > memcpy(result, type, sizeof(type)); > memcpy(resappear, appear, sizeof(appear)); > resind = ind; > maxprice = tempprice; > tie = false; > } > else if( ind == resind ) > { > if( tempprice > maxprice ) > { > memcpy(result, type, sizeof(type)); > memcpy(resappear, appear, sizeof(appear)); > maxprice = tempprice; > tie = false; > } > else if( tempprice == maxprice) > { > tie = true; > } > } > } > return; > } > if( nth >= n ) > return; > if( p < 0 ) > return; > if( p > 0 ) > { > if( ind > 3 ) > return; > else > { > for( i = 0; i <= 4 - ind; i ++) > { > if( p - i*price[nth] >= 0) > { > for( j = 0; j < i; j ++) > { > type[ind ++] = nth; > appear[nth] ++; > } > work(p - i*price[nth], nth + 1); > for( j = 0; j < i; j ++) > { > appear[nth] --; > ind --; > } > > } > } > } > } > } > > void print(int p) > { > int i; > if(maxtype == 0) > printf("%d --- none\n", p); > else if(tie == true) > printf("%d (%d): tie\n", p, maxtype); > else > { > printf("%d (%d): ", p, maxtype); > for( i = 0; i < resind - 1; i++) > printf("%d ",price[result[i]]); > printf("%d\n",price[result[resind - 1]]); > } > } > > Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator