[关闭]
@iamtts 2016-12-15T16:02:40.000000Z 字数 1230 阅读 678

第二次作业题解

F Linearization of the kernel functions in SVM

题目大意:每个系数按顺序对应字母,输出多项式表达式

解题思路:系数可能为0或非零整数,需要判定,而且输出格式需要显示正负号,再继续判断+-1的情况,可能此解法较为繁琐。

AC代码:

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5. int t,a[10],i,count=0;
  6. char b[]={'p','q','r','u','v','w','x','y','z'};
  7. string ch;
  8. scanf("%d",&t);
  9. while (t--)
  10. {
  11. count=0;
  12. for (i=0;i<10;i++)
  13. {
  14. scanf("%d",&a[i]);
  15. if (a[i]!=0 && a[i]!=1 && a[i]!=-1 && i!=9)
  16. {if (i==0 || count==0)
  17. printf("%d%c",a[i],b[i]);
  18. else printf("%+d%c",a[i],b[i]);
  19. count++;
  20. }
  21. if (a[i]!=0 && (a[i]==1 || a[i]==-1) && i!=9)
  22. {if (i==0 || count==0)
  23. a[i]==1?printf("%c",b[i]):printf("-%c",b[i]);
  24. else a[i]==1?printf("+%c",b[i]):printf("-%c",b[i]);
  25. count++;
  26. }
  27. if (i==9 && a[i]!=0)
  28. count==0?printf("%d",a[i]):printf("%+d",a[i]);
  29. }
  30. printf("\n");
  31. }
  32. }

P Friendship of Frog

题目大意:给定一组字母序列,记每个字母间距为1,要求出相同字母的最远距离。

解题思路:Nmax=1000,O(n^2)的时间复杂度可以接受,所以从前向后遍历每一个字母,每个字母向前搜索相同字母,记录最大距离。

AC代码:

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5. int t,ans=10000000,i,k=0,temp=10000000;
  6. string ch;
  7. scanf("%d",&t);
  8. while (t--)
  9. { k++;
  10. ans=10000000;
  11. temp=10000000;
  12. cin>>ch;
  13. for (i=1;i < ch.size();i++)
  14. {
  15. for (int j=i-1;j>=0;j--) {
  16. if (ch[j]==ch[i]) {temp=i-j;break;}
  17. }
  18. //for (int j=i+1;j<ch.length();j++) if (ch[j]==ch[i]) {temp=j-i;break;}
  19. ans=min(ans,temp);
  20. }
  21. if (ans==10000000)
  22. printf("Case #%d: -1\n",k);
  23. else printf("Case #%d: %d\n",k,ans);
  24. }
  25. return 0;
  26. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注