[HDOJ]1031. Design T-Shirt

算法思想谈不上,就是一个统计然后排序的过程。a数组用来存放M个Design T-Shirt的最终得分情况。b数组用来存放前K个得分最高的Design T-Shirt的序号。然后再对b数组排下序就可以了。

代码附在下面:

#include <iostream>
using namespace std;
int main()
{

#ifdef ONLINE_JUDGE
#else
    freopen(
"in.txt","r",stdin);
#endif
    
int N,M,K,i,j,p;
    
double *a,*b,t;
    
while(cin>>N>>M>>K)
    
{
        a 
= new double[M];
        b 
= new double[K];
        memset(a,
0,M*sizeof(double));
        memset(b,
0,K*sizeof(double));
        
for(i = 0;i < N;++i)
            
for(j = 0;j < M;++j)
            
{
                cin
>>t;
                a[j] 
+= t;
            }

        
//a数组用来统计M个Design T-Shirt的总得分情况
        for(i = 0;i < K;++i)
        
{
            p 
= 0;
            
for(j = 0;j < M;++j)
                
if(a[j] > a[p])
                    p 
= j;
            b[i] 
= p;
            a[p] 
= 0;
        }

        
//对b[]数组排序
        for(i = 0;i < K;++i)
        

            
for(p = i,j = i+1;j < K;++j)
                
if(b[j] > b[p])
                    p 
= j;
            
double temp;
            temp 
= b[i];b[i] = b[p];b[p] = temp;       
        }

        
for(i = 0;i < K;++i)
        
{
            
if(i == 0)
                cout
<<b[i]+1;
            
else
                cout
<<" "<<b[i]+1;
        }

        cout
<<endl;
    }

    
return 0;
}

posted on 2009-05-22 11:08  笔记  阅读(360)  评论(0编辑  收藏  举报

导航