題目連接:https://acm.ecnu.edu.cn/contest/61/ios
解題方法,對二維數組的每一行進行從大到小的排序,而後將第一列數字(每行最大的數)加和數組
#include<stdio.h> #include<algorithm> using namespace std; int pie[110][110]; bool cmp(int a,int b){ return a>b; } int main(){ int n,m; scanf("%d%d",&n,&m); for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ scanf("%d",&pie[i][j]); } } for(int i=0;i<n;i++){ sort(pie[i],pie[i]+m,cmp); } /*輸出測試 for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ printf("%d ",pie[i][j]); } printf("\n"); }*/ int sum=0; for(int i=0;i<n;i++){ sum+=pie[i][0]; } printf("%d\n",sum); return 0; }
解題思路:楊輝三角,A[i][j]=A[i-1][j-1]+A[i-1][j],圖形輸出題須要觀察找出規律,逐行輸出。測試
#include<stdio.h> int main(){ int yh[21][21]; //初始化 int n; scanf("%d",&n); for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ yh[i][j]=0; } } for(int i=0;i<n;i++){//第一豎行賦值 yh[i][0]=1; } for(int i=1;i<n;i++){//賦值 for(int j=1;j<=i;j++){ yh[i][j]=yh[i-1][j-1]+yh[i-1][j]; } } for(int i=0;i<n;i++){ for(int j=0;j<=i;j++){ printf("%d",yh[i][j]); if(j!=i){ printf(" ");//最後一個數字後無空格 } } printf("\n"); } return 0; }
解題思路:字符串按字典序從大到小排序spa
#include<iostream> #include<algorithm> #include<string> using namespace std; bool cmp(string a,string b){ return a>b; } int main(){ string str[10001]; int n; cin>>n; for(int i=0;i<n;i++){ cin>>str[i]; } sort(str,str+n,cmp); for(int i=0;i<n;i++){ cout<<str[i]; } cout<<endl; return 0; }
解題方法:延長數組(利用週期循環)code
#include<stdio.h> int main(){ int men[4000],women[4000]; int m,n,k; scanf("%d%d%d",&m,&n,&k); int re1 = k/m+1; int re2 = k/n+1; int z=0,p=0; for(int i=0;i<re1;i++){ for(int j=1;j<=m;j++){ men[z]=j; z++; } } for(int i=0;i<re2;i++){ for(int j=1;j<=n;j++){ women[p]=j; p++; } } for(int i=0;i<k;i++){ printf("%d %d\n",men[i],women[i]); } return 0; }
有兩道題不會寫,一道是動態規劃,另外一個則是數據範圍比較大,待補充。blog