解题思路:
注意事项:
参考代码:
import java.util.Scanner; public class T1832 { public static int[] getRange(String s){ int []a = {0,0,0,0,0}; s = s.substring(4, s.length()); Scanner sc = new Scanner(s); sc.useDelimiter("[,:)]"); for(int i = 1;i<=4;i++){ a[i] = sc.nextInt(); } sc.close(); return a; } public static double getValue(String [][]a,String s){ double ans =0.0; //求和 if(s.contains("U")){ int []t = getRange(s); for(int i_ = t[1];i_<=t[3];i_++){ for(int j_ = t[2];j_<=t[4];j_++){ ans += getValue(a,a[i_][j_]); } } } //求平均值 else if(s.contains("V")){ int []t = getRange(s); for(int i_ = t[1];i_<=t[3];i_++){ for(int j_ = t[2];j_<=t[4];j_++){ ans += getValue(a,a[i_][j_]); } } int n = (t[4]-t[2]+1)*(t[3]-t[1]+1); ans /= n; } //求标准差 else if(s.contains("T")){ int []t = getRange(s); int n = (t[4]-t[2]+1)*(t[3]-t[1]+1); double avg = 0; for(int i_ = t[1];i_<=t[3];i_++){ for(int j_ = t[2];j_<=t[4];j_++){ avg += getValue(a,a[i_][j_]); } } avg /= n; for(int i_ = t[1];i_<=t[3];i_++){ for(int j_ = t[2];j_<=t[4];j_++){ ans += (getValue(a,a[i_][j_]) - avg)*(getValue(a,a[i_][j_]) - avg); } } ans = Math.sqrt(ans/n); } else{ ans = Double.parseDouble(s); } return ans; } public static void main(String[] args) { Scanner in = new Scanner(System.in); while(in.hasNext()){ int n = in.nextInt(),m = in.nextInt(); String [][]a = new String[n+1][m+1]; for(int i = 1;i<=n;i++){ for(int j = 1;j<=m;j++){ a[i][j] = in.next(); } } for(int i = 1;i<=n;i++){ for(int j = 1;j<m;j++){ System.out.printf("%.2f ",getValue(a,a[i][j])); } System.out.printf("%.2f%n",getValue(a,a[i][m])); } } in.close(); } }
0.0分
1 人评分
C语言程序设计教程(第三版)课后习题6.7 (C语言代码)浏览:763 |
简单的a+b (C语言代码)浏览:723 |
简单的a+b (C语言代码)浏览:494 |
A+B for Input-Output Practice (V) (C++代码)浏览:451 |
分糖果 (C++代码)浏览:1447 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:1039 |
C语言训练-大、小写问题 (C语言代码)浏览:614 |
C语言训练-大、小写问题 (C语言代码)浏览:732 |
C语言程序设计教程(第三版)课后习题6.8 (C++代码)浏览:592 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:711 |